HtmlAgilityPack获取XPATH中的属性值

 jvxiang   2017-03-09 21:09   3,140 人阅读  0 条评论

使用HtmlAgilityPack通过XPATH操作HTML是很简单的。具体代码网上很多,我就不具体写了,大体方式就是:

var doc = new HtmlDocument();doc.LoadHtml(html);var root = doc.DocumentNode;var nodes = root.SelectNodes("xpath");var node =root.SelectSingleNode("xpath");

 

我们正常使用的XPATH,类似//a的类型获取属性的话很简单,只需要

root.GetAttributeValue("name", 默认值);

就可以了。

但是xpath同时支持直接将属性放入xpath表达式中:比如//a/@href,代表href属性。此时使用

var node =root.SelectSingleNode("xpath")

会发现获取到的节点还是a节点,而不是href属性。同时HtmlNode并不支持.value,无法获直接通过xpath获取到对应的属性值。

如果我们需要直接获取属性怎么办呢?可以使用如下代码:

var doc = new HtmlDocument();doc.LoadHtml(html);var root = doc.DocumentNode;HtmlNodeNavigator navigator = (HtmlNodeNavigator)root.CreateNavigator();var node = navigator.SelectSingleNode(xpath);var href = node.value;

假设此时xpath是//a/@href,则node.value为href的值。

本文地址:https://www.jvxiang.com/htmlagilitypack获取xpath中的属性值.html
版权声明:本文为原创文章,版权归 jvxiang 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情