0

我有一个 XML 文件,其中一些子树标有 ID-Tags

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

如果我尝试在 XPath 的帮助下通过这个 id 找到一个子树,contains()我显然会遇到像 5 和 15 这样的数字的麻烦:

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

我尝试使用matches()但不支持。

任何想法如何在没有比赛的情况下解决这个问题?

4

2 回答 2

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

现场演示

于 2013-03-08T08:57:28.757 回答
1

如果您的 ID 都是数字,则可以使用

//someid[number()=5]

您也可以使用 matches() 和正则表达式

//someid[matches(text(),"^5$")]
于 2013-03-08T09:06:58.147 回答