计算HTML文件中的所有节点

时间:2011-11-06 18:01:48

标签: c#-4.0

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

如果可能的话,我想这样做,如果可能的话,不必像HTMLAgilityPack那样使用外部库。此外,我正在处理的HTML并不是一个良好的形式和有效的保证。

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

感谢。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

首先。您确定使用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溢出文章:What is the best way to parse html in C#?

希望它能满足您的需求