2017-04-13 97 views
0

使用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)作为结果?

回答

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

要限制b元素与XPath找到包含字符串“ISBN”之一,并限制了以下同级文本节点最近的只有

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

或者,您可以限制XPath找到的b元素为以子串“ISBN”开头的元素:

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

使用位置索引1,正如在其他答案中提到的,也应该工作,因为b元素的顺序是一致的,但上面给出的两种替代方式更好地代表了您的意图,因为它提到了基于您的字符串“ISBN”搜索条件来查找目标文本。