使用HTML Agility Pack解析大小写标记?

5
我正在成功地使用HTML Agility Pack,并对其印象深刻。但是,我是这样选择内容的:
doc.DocumentNode.SelectSingleNode("//body").InnerHtml

如何处理以下情况,涉及不同文档?
<body>
<Body>
<BODY>

我的代码只会获取小写版本吗?

1
你尝试过什么?看起来像是可以在几分钟内测试的东西。 - Oded
1个回答

20

Html Agility Pack以不区分大小写的方式处理HTML。这意味着它会以相同的方式解析BODY、Body和body。这是有意设计的,因为HTML不区分大小写(XHTML则不同)。

尽管如此,当您使用其XPATH功能时,必须使用小写字母编写的标签。这意味着表达式"//body"将匹配BODY、Body和body,而"//BODY"将不匹配任何内容。


@Mark - 我实际上就是这篇文章的作者 :-) 我这样做是因为XPath区分大小写(而translate函数非常不实用!)而HTML则不是。我没有看到其他好的解决方案? - Simon Mourier
我不知道...如果文档是HTML,就把所有东西都转换成小写?但如果是XHTML或XML,则保留它们?这并不是什么大问题,只是需要注意一下 :) - mpen
@Mark - Html Agility Pack是为HTML设计的,而不是X(HT)ML,您可以安全地使用标准的.NET类。因此,对于HTML来说,它确实会将所有内容“小写化”。 - Simon Mourier
2
Simon,感谢您的澄清,不得不说这是一个非常优秀的库——做得好 :) - YodasMyDad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接