Xml 在同级和位置上具有多个标准的xpath

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表达式:路径

我有以下xml文档。我想提取名为class='Category'且值为class='bb'的子数据的值,该子数据位于同级名称class='WayPointNumber'之后。 我试过这样的事情:

//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不客气。不过,我不明白你在评论中提出了什么问题。不过,请随意提出一个新问题,并明确说明你在寻找什么。