选择包含具有包含X的类的子节点的节点

时间:2015-03-06 16:47:29

标签: xml xpath xml-parsing xpath-2.0

我得到了以下XML:

  <a> 
    <div class="from ng-binding">Stranger</div>  
    <div class="subject ng-binding">Hello there</div>  
    <div class="time ng-binding"</div> 
  </a>

我正在尝试选择一个包含子类的标记,该类包含“subject”(所以基本上就是这个例子的标记)。

我尝试了以下内容:

//a[contains(.//div/@class,'subject')]

但它没有选择任何东西。 我将其更改为//a[contains(.//div/@class,'from')],这样可行,所以我不知道问题是什么。 不应该.//检查节点的所有孩子吗?

1 个答案:

答案 0 :(得分:2)

你想要

//a[.//div[contains(@class, 'subject')]]

contains()函数只接受第一个参数中的第一个项,因此如果将.//div/@class作为第一个参数传递给contains(),则只会测试{{1}的第一个结果而不是测试所有这些。

换句话说,您尝试的代码基本上等同于

.//div/@class