C#htmlagilitypack XPath帮助

时间:2011-07-26 05:51:44

标签: c# xpath html-agility-pack

我有这个不起作用的xpath表达式

"//div[child[0]::h4[text()[contains(.,'Dir')]]]/a"

解析这个html:

<div class="txt"> 
      <h4 class="c1"> 
        Dir
      </h4> 
    <a  href="/name/myname/">Bob</a>
</div> 

我正试图进入链接节点(a)。文档中还有其他html标签具有相同的div / h4层次结构,唯一的区别是h4标签的innertext。那么我该如何检查div类(1)是否有一个内部文本为“dir”的子h4节点AND(2)得到第一个链接节点(a)。不要认为链接是h4的下一个兄弟。

2 个答案:

答案 0 :(得分:2)

你不能使用这个xpath吗?

"//div[h4[contains(text(),'Dir')]]/a"

child[0]不是有效的轴AFAIK,因此失败。

如果没有更完整的HTML示例,我不知道这是否能满足您的条件。但这肯定适用于这个。

如果h4中有多个div元素,您只想检查第一个:

"//div[h4[1][contains(text(),'Dir')]]/a"

答案 1 :(得分:1)

  

如何检查div类(1)是否具有内部文本“dir”的子h4节点AND(2)获取第一个链接节点(a)

使用:

"//div[@class='txt' and h4[contains(.,'Dir')]]/a[1]"