XPath(Xacabeo)多条件语法

时间:2016-05-19 12:30:19

标签: xml xpath

我正在尝试从位置为30的xml文件中提取一些数据并且它包含单词“mardi”。我尝试了几种变体,这是最新的变种:

//ns:RESULTSET/ns:ROW/ns:COL[position()=30 and contains(text(),'mardi')]

它没有返回任何东西,但是当我跑步时:

//ns:RESULTSET/ns:ROW/ns:COL[position()=30]

它返回:

  
      
  1. <ns:COL><ns:DATA>mardi</ns:DATA></ns:COL>
  2.   
  3. <ns:COL><ns:DATA>logement coopératif</ns:DATA></ns:COL>
  4.   

获得我想要的正确语法是什么?我正在使用 在Linux上Xacobeo,如果这有任何区别的话。 感谢

1 个答案:

答案 0 :(得分:1)

你尝试过的XPath没有用,因为文本&#39; mardi&#39;嵌套在ns:DATA元素中,而不是ns:COL的直接子元素。通过在谓词中使用text(),仅评估上下文元素的直接子文本节点(在这种情况下为ns:COL)。

要评估上下文元素中的整个文本,请改用.

//ns:RESULTSET/ns:ROW/ns:COL[position()=30 and contains(.,'mardi')]

或者您可能希望明确评估ns:DATA子元素中的文本:

//ns:RESULTSET/ns:ROW/ns:COL[position()=30 and contains(ns:DATA,'mardi')]