【问题标题】:Count all nodes in a HTML file计算 HTML 文件中的所有节点
【发布时间】:2011-11-07 02:19:23
【问题描述】:

有没有一种简单的方法来计算 HTML 文件中的节点?我还需要计算某种类型的节点,例如 div 等。

如果可能的话,我想这样做,而不必使用像 HTMLAgilityPack 这样的外部库。此外,我正在处理的 HTML 并不能保证格式正确且有效。

有没有办法从 C# 中做到这一点?

谢谢。

【问题讨论】:

  • 这里的节点是指父级节点,如 、 或所有内容,甚至是嵌套节点,如

标签: c#-4.0


【解决方案1】:

首先。您确定使用 javascript 的客户端解决方案不足以满足您的需求吗? 因为在 HTML 文档中计算节点的最简单方法是在客户端浏览器上使用 jQuery。

<script src="http://code.jquery.com/jquery-1.7.min.js"></script>
<script>
    $('html').children() // will give you all child elements of the html element
    $('body').children() // same for body element
    $('body').children('div') // will give you just the direct children elements of 'div' type
    $('body').find('div') // will give you all the nested elements of 'div' type
</script>

如果您不熟悉 jQuery,请查看 www.jquery.com

如果您仍然需要 C# 解决方案来对文档进行服务器端解析,那么我建议您使用 HTMLAgilityPack(即使您不希望这样做)。编写自己的解析器在我看来是浪费时间,因为您需要考虑格式错误的 html/xml 等,这可能会很痛苦。

尝试使用这篇 s-overflow 文章:What is the best way to parse html in C#?

希望它能满足你的需求

【讨论】:

  • 这是因为我需要从 C# 中执行此操作 - 抱歉,如果不清楚,我会更新我的问题...
  • 这些文件不会靠近浏览器 - 这是一些本地化文件与源文件的文件差异。
【解决方案2】:

如果您有 XHTML,您可以将其加载到 XDocument 中并使用 XML 操作 API 或 LINQ to XML 来计算特定模式。
如果你不这样做,你可以尝试使用正则表达式。但这适用于少量有趣的标签,因为您必须为每个标签手动定义一个表达式。

【讨论】:

    【解决方案3】:

    使用 LinqToXml API,您可以轻松解析和循环遍历 HTML 文档的所有节点。您可以找到与 LinqToXml 相关的有用文章,但都是在解析 XML 文档的上下文中。

    以下是来自 StackOverflow 的类似线程:C# Is there a LINQ to HTML, or some other good .Net HTML manipulation API?

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 1970-01-01
      • 2021-01-02
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多