HtmlAgilityPack(HAP)像处理 XML 一样处理 HTML-选择节点

作者:vkvi 来源:ITPOW(原创) 日期:2020-2-6

一、节点名称大小写敏感吗?

敏感。因为这个是根据 XPath 来的,而 XPath 就是大小写敏感的。以下二者是不相同的:

好消息是:HtmlAgilityPack(HAP) 在加载 HTML 时,会自动转换成小写,也就是说,即使我们的 HTML 是 TR,也可以用 SelectNodes("//tr") 选取,但不能用 SelectNodes("//TR") 选取。

二、如何在子节点下继续选择子节点

比如已经从 table 中选择了某个 tr,如何继续在其中选择 td 呢?XPath 怎样写呢?

也就是说 SelectNodes 中的 XPath 是针对 Document 的,并不是只限定在当前节点范围,这个和 XML 处理是一样的。

三、如何同时选择两种节点?

这个是 XPath 内容,比如既选择 td,也选择 th:

四、处理 table 时,会自动添加、删除 tbody 吗?

不会。即如果 HTML 中有 tbody,则 XPath 中也必须跟上 tbody;如果 HTML 中没有 tbody,则 XPath 中也不能加 tbody。

五、SelectNodes 无结果时返回 null

SelectNodes 无结果时返回的是 null,而不是 0 长度的 HtmlNodeCollection,所以在循环前,要进行 null 判断。

六、如何获取属性

可以使用 GetAttributeValue,比较方便。

第一个参数为节点名称,小写,HTML 中写的是大写也无所谓,会自动转换。第二个参数是默认值。

相关阅读


相关文章