使用XPATH获取非空元素

时间:2013-04-16 07:59:34

标签: xpath

我有以下XML

<?xml version = "1.0" encoding = "UTF-8"?>
<root>
  <group>
    <p1></p1>
  </group>
  <group>
    <p1>value1</p1>
  </group>
  <group>
    <p1></p1>
  </group>
</root>

是否有可能获得最后一个具有值的节点?在这种情况下,获取第二组/ p1的值。

4 个答案:

答案 0 :(得分:44)

此xpath也可以正常工作:

//group/p1[string-length(text()) > 0] 

答案 1 :(得分:6)

/root/group/p1[text() and not(../following-sibling::group/p1/text())]

之类的内容

换句话说:获取具有文本的p1元素,并且其父组未跟随具有非空p1元素的组节点。

答案 2 :(得分:1)

您也可以使用[not(node())]选择器。 示例://group/p1[not(node())]

答案 3 :(得分:0)

它实际上可以简化如下:

//group/p1[string-length() > 0]    => element text is non-empty
//group/p1[string-length() = 6]    => element text has length 6