2013-03-08 58 views
0

我有一個XML文件,其中一些子樹標有ID標籤使用XPath包含()得到太多的結果

<root> 
    <A> 
    <someid>5</someid> 
    ... 
    </A> 
    <B> 
    <someid>15</someid> 
    ... 
    </B> 
</root> 

如果我試圖通過這個ID與找到的子樹XPath的幫助我,顯然遇到了麻煩與號碼,如5和15:

//someid[ contains(text(), "5") ] 

我試圖用matches()但它不支持。

任何想法如何解決這個沒有匹配?

+1

你不想包含( 「5」),你想=「5」! – 2013-03-08 15:05:21

回答

1
//someid[text()="5"] 

我不知道你使用的語言,所以我會在PHP演示:

$str=<<<XML 
<root> 
    <A> 
    <someid>5</someid> 
    </A> 
    <B> 
    <someid>15</someid> 
    </B> 
</root> 
XML; 
$xml=simplexml_load_string($str); 
foreach($xml->xpath('//someid[text()="5"]') as $node) 
{ 
    echo $node; 
} 

輸出5

Live demo

1

如果你的ID都爲數字,你可以使用

//someid[number()=5] 

您可以如用火柴()和正則表達式

//someid[matches(text(),"^5$")]