彩票走势图

HTML文档处理控件Aspose.HTML功能演示:在C#中将HTML转换为纯文本或从HTML提取文本

翻译|使用教程|编辑:李显亮|2020-12-18 09:47:22.490|阅读 451 次

概述:HTML的内容使用不同的标签进行区分,可以使用C#语言轻松地将HTML转换为纯文本,而忽略开始和结束标记。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

HTML是一种标记语言,广泛用于网站,Web应用程序等中。HTML的内容使用不同的标签进行区分。您可以使用C#语言轻松地将HTML转换为纯文本,而忽略开始和结束标记。

同样,根据您的要求,可能会有一些级联的样式表规范,JavaScript或HTML的任何其他部分。因此,就像从HTML文档中提取文本一样。让我们浏览以下部分以获取详细信息:

  • 在C#中使用INodeIterator将HTML转换为文本文件
  • 使用C#以不同的方法从HTML提取文本
  • 使用C#将URL网页HTML转换为文本

您可以使用Aspose.HTML for .NET API将HTML转换为纯文本,点击下方按钮下方使用。

点击下载最新版Aspose.HTML

17周年庆来啦!整合所有格式API处理控件Aspose.Total永久授权火热促销中,新购乐享85折起!立马1分钟了解全部!

在C#中使用INodeIterator将HTML转换为文本文件

用于.NET API的Aspose.HTML基于DOM(文档对象模型),因此您可以使用INodeIterator接口在API的不同节点之间进行迭代。同样,它使您可以定义一个NodeFilter并覆盖用于过滤内容的方法的控件。您可以忽略样式,脚本或HTML文件中的任何其他元素,仅从其中选择文本字符串。以下是使用C#将HTML转换为纯TXT文件的步骤:

  1. 读取输入的HTML文件
  2. 初始化节点迭代器的实例
  3. 创建INodeIterator实例
  4. 检查样式过滤器
  5. 读取字符串中的节点值
  6. 将HTML的文本内容写入TXT文件

下面的代码显示了如何使用C#将HTML转换为纯文本文件:

String content = File.ReadAllText(dataDir + "Test2.html");

// Create an instance of HTML document
using (var document = new HTMLDocument(content, ""))
{
    // The first way of gathering text elements from document
    // Initialize the instance of node iterator
    Aspose.Html.Dom.Traversal.INodeIterator iterator = document.CreateNodeIterator(document, Aspose.Html.Dom.Traversal.Filters.NodeFilter.SHOW_TEXT, new StyleFilter());
    StringBuilder sb = new StringBuilder();
    Aspose.Html.Dom.Node node;
    while ((node = iterator.NextNode()) != null)
        sb.Append(node.NodeValue);
    Console.WriteLine(sb.ToString());

    File.WriteAllText(@"NodeIterator.txt", sb.ToString());
}


//////  Represents a user filter created in order to ignore content of the 'style' and 'script' element.
///class StyleFilter : Aspose.Html.Dom.Traversal.Filters.NodeFilter
{
    public override short AcceptNode(Aspose.Html.Dom.Node n)
    {
        //If you want to avoid any element, write its name in capital letters
        return (n.ParentElement.TagName == "STYLE" || n.ParentElement.TagName == "SCRIPT" ? FILTER_REJECT : FILTER_ACCEPT);
    }
}
使用C#以不同的方法从HTML提取文本

我们已经学习了如何使用INodeIterator将HTML转换为Text。同样,还有其他几种方法可以满足这些要求。您可以创建自定义方法来提取文本,也可以按照以下步骤中的说明使用TextContent属性:

  1. 加载输入的HTML文档
  2. 定义用户定义的方法
  3. 检查每个NodeType以查看它是元素节点还是文本节点
  4. 使用TextContent属性获取文本元素
  5. 保存输出TXT文件

下面的代码段说明了在C#中将HTML转换为纯文本的两种不同方法:

String text = "";
String content = File.ReadAllText(dataDir + "Test2.html");
// Create an instance of HTML document
var document = new HTMLDocument(content, "");

// The second way of gathering text elements from document by using custom method
text = GetContent(document.Body);

File.WriteAllText("Test.txt", text);

// The third way of gathering text elements from document by using TextContent property
text = document.Body.TextContent;

File.WriteAllText("Test.txt", text);



static string GetContent(Aspose.Html.Dom.Node node)
{
    StringBuilder sb = new StringBuilder();
    foreach (var n in node.ChildNodes)
    {
        if (n.NodeType == Aspose.Html.Dom.Node.ELEMENT_NODE)
            sb.Append(GetContent(n));
        else if (n.NodeType == Aspose.Html.Dom.Node.TEXT_NODE)
            sb.Append(n.NodeValue);
    }
    return sb.ToString();
}
使用C#将URL网页HTML转换为文本

我们已经介绍了脱机网页HTML到文本的转换,其中要求HTML文件通过将其下载到磁盘上而存在。让我们更进一步,您甚至不需要将HTML文件保存在磁盘上。您可以通过使用C#将网页的URL指定为URL直接转换为TXT文件。例如,让我们通过以下步骤将Aspose.HTML for .NET API的产品页面转换为TXT文件:

  1. 初始化HTMLDocument对象并指定URL
  2. 阅读HTML格式的文本内容
  3. 使用从网页中提取的文字写入TXT文件

下面的代码显示了如何使用C#将URL网页HTML转换为文本:

// Initialize HTMLDocument object with URL
HTMLDocument document = new HTMLDocument("//products.aspose.com/html/net");
            
// Read the text contents of the HTML format
String text = document.Body.TextContent;
            
// Write the TXT file with extracted text
File.WriteAllText("Webpage.txt", text);

还想要更多吗?您可以点击阅读【2020 · Aspose最新资源整合】查找需要的教程资源。如果您有任何疑问或需求,请随时加入Aspose技术交流群(761297826),我们很高兴为您提供查询和咨询

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP