我得到了以下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')]
,这样可行,所以我不知道问题是什么。
不应该.//
检查节点的所有孩子吗?
答案 0 :(得分:2)
你想要
//a[.//div[contains(@class, 'subject')]]
contains()函数只接受第一个参数中的第一个项,因此如果将.//div/@class
作为第一个参数传递给contains()
,则只会测试{{1}的第一个结果而不是测试所有这些。
换句话说,您尝试的代码基本上等同于
.//div/@class