2014-02-22 78 views
-1

我有這個specitic結構的XML文檔:什麼是我的XML的Xpath查詢?

<ul> 
<li> 
the 
<a href="http://www...">dog</a> 
is black 
</li> 
<li > 
the 
<a href="http://www....">cat</a> 
is white 
</li> 
</ul> 

但我也有這樣的:

<ul> 
<li> 
the bird is blue 
</li> 
<li > 
the 
<a href="http://www....">frog</a> 
</li> 
</ul> 

我不知道是否有在我<li>一個<a>和它在哪裏。 我想讓XPath查詢得到像「狗是黑色的」,「貓是白色的」,「鳥是藍色的」和「青蛙」這樣的句子

謝謝!

+0

http://stackoverflow.com/questions/3019644/how-to-use-xpath-to-filter-elements-by-textcontent -get-父 - 通過軸 –

回答

0

如果你綁定到XPath 1.0,你不能得到句子作爲分離的標記。您可以使用

//ul//text() 

得到所有的列表元素的所有文字,但對於第一個HTML代碼段,這將返回類似「狗是黑色的貓是白色的。」

如果需要分隔的句子,從外部的XPath檢索列表項,但句子在一起(例如PHP,Java中,...。你使用任何)。如何做到這一點不同,從語言到語言,看看參考或改進問題/問另一個問題。

//ul/li 

隨着的XPath 2.0你有更多的運氣,你可以使用其中一個查詢:

//ul/li/data(.) 
//ul/li/string-join(.//text. ' ') 

如果第一個返回你所需要的使用它,如果有與問題空格(對於不同的實現,空白處理是不同的,但通常可以配置)尋求更靈活的第二個查詢並根據需要進行調整。

0

感謝您的repply,我使​​用XPath的iOS應用程序與HTML解析器:hpple(https://github.com/topfunky/hpple) 我認爲它使用XPath 1.0,因爲日誌說我字符串連接功能無法識別

//ul//text() 

的作品,但他每個字回一個字,每行不是一條線