2013-02-22 45 views

回答

2
//span/text() 

返回//span(此處爲「foo」)的直接子節點的所有文本節點。


//span[1]您試圖恢復與它的所有內容,第一<span/>元素,因此它實際上應該返回foo<strong>bar</strong>。如果你只想返回第一個文本節點,上述延長這樣的查詢:

//span/text()[1] 

對於輸入像

<span> 
    foo 
    <strong>bar</strong> 
    batz 
</span> 

這將導致「foobatz」,否則,它仍將限制結果集設置爲「foo」。

+0

完美 - 謝謝你Jens Erat!我*愛*這個社區.... – SteveWF 2013-02-22 17:26:31

0

試試這個,

xpath string(//span/strong) 

那就是如何我xmllint外殼使用它。您可以直接使用功能string

+0

這將返回「酒吧」,*不* *「富」。問題是相反的。 – 2013-02-22 12:09:47

+0

@JensErat在這種情況下,這裏給出的XML不是首選格式。所有的數據預計在不同的標籤。 ' FOO 酒吧 ' 或者甚至可以嘗試添加屬性.. '<跨度ATTR = 「foo」 的>' – Antarus 2013-02-22 12:17:51

+0

上面的XML語法上完全精細和有它的合理例子。想想'

Foo batz。

'這是一個有效的X(HT)ML片段。 – 2013-02-22 13:50:34