首页 / C#开发 / 正文

C# HtmlAgilityPack Xpath判断HTML源码的某个属性是否包含或不包含指定的属性或值

20778 发布于: 2014-09-29 读完约需4分钟
上一篇介绍了C#解析HTML网页源码的一款组件神器--HtmlAgilityPack和提取循环列表数据的方法,今天在使用中遇到了一个新的问题,结合Xpath路径来提取循环列表中的一个HTML标签的InnerText,提取的时候需要判断是这个标签的class属性是否包含某个指定的属性值,google了一下(百度搜索没有相应的结果),利用Xpath的contains可以解决,代码如下:
//选择不包含class属性的节点
var result = node.SelectNodes(".//span[not(@class)]");
//选择不包含class和id属性的节点
var result = node.SelectNodes(".//span[not(@class) and not(@id)]");
//选择不包含class="expire"的span
var result = node.SelectNodes(".//span[not(contains(@class,'expire'))]");
//选择包含class="expire"的span
var result = node.SelectNodes(".//span[contains(@class,'expire')]");
另一种解析方式,假如我们需要根据div的class属性是否包含post值来提取div中的InnerText:
<div id="post-405" class="post-405 post type-post status">inner text</div>
<div id="post-105" class="post-105 post type-post status">inner text</div>
<div id="post-5" class="post-5 post type-post status">inner text</div>
可以用以下方法来提取符合条件的所有HtmlNode节点
var results = doc.DocumentNode
                 .Descendants("div")
                 .Where(x=>x.Attributes.Contains("class") &&
                           x.Attributes["class"].Value.Contains("post"));
提取得到节点数据之后,根据实际处理即可。

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: C#利用HtmlAgilityPack组件使用法之配合Xpath解析获取循环列表中各的节点信息

下一篇: 微软发布ASP.NET vNext in Visual Studio “14” CTP 4

本文永久链接码友网 » C# HtmlAgilityPack Xpath判断HTML源码的某个属性是否包含或不包含指定的属性或值

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册