Xml 在同级和位置上具有多个标准的xpath
我有以下xml文档。我想提取名为class='Category'且值为class='bb'的子数据的值,该子数据位于同级名称class='WayPointNumber'之后。 我试过这样的事情:Xml 在同级和位置上具有多个标准的xpath,xml,xpath,Xml,Xpath,我有以下xml文档。我想提取名为class='Category'且值为class='bb'的子数据的值,该子数据位于同级名称class='WayPointNumber'之后。 我试过这样的事情: //Data[[@name='Category' and ./value='bb'] and [/following-sibling::*[(@name='WayPointNumber')]]]/ExtendedData/Data[5] 但我总是遇到一个错误:error-无法计算XPath表达式:路径
//Data[[@name='Category' and ./value='bb'] and [/following-sibling::*[(@name='WayPointNumber')]]]/ExtendedData/Data[5]
但我总是遇到一个错误:error-无法计算XPath表达式:路径表达式中意外的标记“[”
正确的语法是什么
<root>
<ExtendedData>
<Data name="Tournumber">
<value>1</value>
</Data>
<Data name="Guide">
<value>lago di garda</value>
</Data>
<Data name="Category">
<value>Numbering</value>
</Data>
<Data name="Category">
<value>bb</value>
</Data>
<Data name="WayPointNumber">
<value>13</value>
</Data>
<Data name="Type">
<value>POI</value>
</Data>
<Data name="Hashlink">
<value>1_822606</value>
</Data>
<Data name="LocalId">
<value>822606</value>
</Data>
</ExtendedData>
<ExtendedData>
<Data name="Tournumber">
<value>1</value>
</Data>
<Data name="Guide">
<value>lago di garda</value>
</Data>
<Data name="Category">
<value>Numbering</value>
</Data>
<Data name="WayPointNumber">
<value>14</value>
</Data>
<Data name="Type">
<value>POI</value>
</Data>
<Data name="Hashlink">
<value>1_822557</value>
</Data>
<Data name="LocalId">
<value>822557</value>
</Data>
</ExtendedData>
</root>
1.
加尔达湖
编号
bb
13
POI
1_822606
822606
1.
加尔达湖
编号
14
POI
1_822557
822557
我想提取名为class='Category'且值为class='bb'的子数据的值,该子数据位于同级名称class='WayPointNumber'之后
我认为这太复杂了。请使用以下路径表达式:
/root/ExtendedData/Data[@name = 'Category' and value = 'bb' and following-sibling::Data[@name = 'WayPointNumber']]
评估XPath表达式,例如在bash shell中使用XPath
命令:
$ xpath a.xml '/root/ExtendedData/Data[@name = "Category" and value = "bb" and following-sibling::Data[@name = "WayPointNumber"]]'
然后,结果将是:
Found 1 nodes:
-- NODE --
<Data name="Category">
<value>bb</value>
</Data>
找到1个节点:
--节点--
bb
谢谢你的回答。但是,当我试图提取WayPointNumber时,我对xpath语法感到困惑。我尝试了以下语法,但没有成功。你能再给我一次建议吗?/root/ExtendedData/Data[@name='WayPointNumber'和following sibling::Data[@name='Category']和following sibling::Data/value='bb']/值难以置信,我自己解决了它,我想我现在明白了。解决方案是:/root/ExtendedData/Data[@name='WayPointNumber'和前面的兄弟姐妹::Data[@name='Category'和value='bb']].YIPPIE!!@happymapper不客气。不过,我不明白你在评论中提出了什么问题。不过,请随意提出一个新问题,并明确说明你在寻找什么。