我怎样才能只选择下面的第一个兄弟姐妹?

时间:2017-04-13 02:43:45

标签: xpath

使用XPATH,我试图从以下内容中获取ISBN号:

<span class="product_info_details">
   <b class="">ISBN: </b>1941529429
   <b class="">Contributors: </b> (Illustrator)
   <b class="">Publisher:</b> Parallax Pr
   <b class="">Published:</b> Nov 1 2016
</span>

现在,当我使用:

//span[@class="product_info_details"]/b/following-sibling::text()

我得到了输出:

1941529429

(Illustrator)

Parallax Pr

Nov 1 2016

我可以使用什么才能获得第一个值(1941529429)作为结果?

2 个答案:

答案 0 :(得分:6)

您希望将XPath找到的b元素限制为包含子字符串&#39; ISBN&#39; 的元素,并将以下兄弟文本节点限制为最近的

//span[@class="product_info_details"]/b[contains(.,'ISBN')]/following-sibling::text()[1]

或者,您可以将XPath找到的b元素限制为以子字符串&#39; ISBN&#39;开头的元素。 :

..../b[starts-with(.,'ISBN')]/....

使用位置索引1,如另一个答案所述,也应该有效,因为b元素的顺序是一致的,但上面给出的两个替代方案更好地代表了你的意图,因为它提到了子串&#39; ISBN&#39;您根据搜索条件找到目标文本。

答案 1 :(得分:2)

(//span[@class="product_info_details"]/b)[1]/following-sibling::text()[1]