HTML 是一种标记语言,广泛用于网站、Web 应用程序等。HTML 中的内容使用不同的标签来区分。您可以使用 C# 语言轻松地将 HTML 转换为纯文本,同时忽略开始和结束标记。同样,根据您的要求,可能会有一些级联样式表规范、JavaScript 或 HTML 的任何其他部分。因此,它就像从 HTML 文档中提取文本一样。让我们通过以下部分了解详细信息:
- C#中的HTML到纯文本转换器
- 在 C# 中使用 INodeIterator 将 HTML 转换为文本文件
- 使用 C# 以不同的方法从 HTML 中提取文本
- 使用 C# 将 URL 网页 HTML 转换为文本
C#中的HTML到纯文本转换器
您可以使用 Aspose.HTML for .NET API 将 HTML 转换为纯文本。可以使用以下 NuGet 安装命令在基于 .NET Framework 的环境中轻松配置它:
PM> Install-Package Aspose.Html
在 C# 中使用 INodeIterator 将 HTML 转换为文本文件
Aspose.HTML for .NET API 基于 DOM(文档对象模型),因此您可以使用 INodeIterator 接口遍历 API 的不同节点。同样,它使您可以控制定义 NodeFilter 并覆盖过滤内容的方法。您可以忽略 HTML 文件中的样式、脚本或任何其他元素,仅从中挑选出文本字符串。以下是使用 C# 将 HTML 转换为纯 TXT 文件的步骤:
- 读取输入 HTML 文件
- 初始化节点迭代器的实例
- 创建 INodeIterator 实例
- 检查样式过滤器
- 读取字符串中的节点值
- 将 HTML 的文本内容写入 TXT 文件
下面的代码展示了如何使用 C# 将 HTML 转换为纯文本文件:
String content = File.ReadAllText(dataDir + "Test2.html");
// 创建 HTML 文档的实例
using (var document = new HTMLDocument(content, ""))
{
// 从文档中收集文本元素的第一种方法
// 初始化节点迭代器的实例
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());
}
///<summary>
/// 表示为忽略“样式”和“脚本”元素的内容而创建的用户过滤器。
///</summary>
class StyleFilter : Aspose.Html.Dom.Traversal.Filters.NodeFilter
{
public override short AcceptNode(Aspose.Html.Dom.Node n)
{
//如果你想避免任何元素,用大写字母写它的名字
return (n.ParentElement.TagName == "STYLE" || n.ParentElement.TagName == "SCRIPT" ? FILTER_REJECT : FILTER_ACCEPT);
}
}
使用 C# 以不同的方法从 HTML 中提取文本
我们已经学习了如何使用 INodeIterator 将 HTML 转换为文本。同样,还有其他几种方法可以实现这些要求。您可以创建自定义方法来提取文本,或使用 TextContent 属性,如下面的步骤所述:
- 加载输入 HTML 文档
- 定义用户定义的方法
- 检查每个 NodeType 以查看它是元素节点还是文本节点
- 使用 TextContent 属性获取文本元素
- 保存输出 TXT 文件
下面的代码片段解释了在 C# 中将 HTML 转换为纯文本的两种不同方法:
String text = "";
String content = File.ReadAllText(dataDir + "Test2.html");
// 创建 HTML 文档的实例
var document = new HTMLDocument(content, "");
// 使用自定义方法从文档中收集文本元素的第二种方法
text = GetContent(document.Body);
File.WriteAllText("Test.txt", text);
// 第三种使用 TextContent 属性从文档中收集文本元素的方法
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 文件保存在磁盘上。您可以通过指定其 URL 直接将网页转换为使用 C# 的 TXT 文件。例如,让我们将 Aspose.HTML for .NET API 的产品页面转换为 TXT 文件,步骤如下:
- 初始化 HTMLDocument 对象并指定 URL
- 读取 HTML 格式的文本内容
- 使用从网页中提取的文本编写 TXT 文件
下面的代码展示了如何使用 C# 将 URL 网页 HTML 转换为文本:
// 用 URL 初始化 HTMLDocument 对象
HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net");
// 读取 HTML 格式的文本内容
String text = document.Body.TextContent;
// 使用提取的文本编写 TXT 文件
File.WriteAllText("Webpage.txt", text);
结论
在本文中,我们讨论了如何将 HTML 文件转换为纯文本,从 HTML 中提取文本,以及使用 C# 将在线网页 URL 转换为 TXT 文件格式。如果您需要任何进一步的帮助,您可以使用不同的方法并随时通过 免费支持论坛 与我们联系。
也可以看看
提示:您可能对免费的 Text to GIF Converter 感兴趣,它允许您从文本生成动画。