我正在尝试从位置为30的xml文件中提取一些数据并且它包含单词“mardi”。我尝试了几种变体,这是最新的变种:
//ns:RESULTSET/ns:ROW/ns:COL[position()=30 and contains(text(),'mardi')]
它没有返回任何东西,但是当我跑步时:
//ns:RESULTSET/ns:ROW/ns:COL[position()=30]
它返回:
<ns:COL><ns:DATA>mardi</ns:DATA></ns:COL>
- 醇>
<ns:COL><ns:DATA>logement coopératif</ns:DATA></ns:COL>
获得我想要的正确语法是什么?我正在使用
在Linux上Xacobeo
,如果这有任何区别的话。
感谢
答案 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')]