25

我有以下 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

4 回答 4

64

这个 xpath 也应该可以工作:

//group/p1[string-length(text()) > 0] 
于 2013-04-16T15:45:12.557 回答
9

像这样的东西怎么样/root/group/p1[text() and not(../following-sibling::group/p1/text())]

换句话说:获取具有文本且其组父级后面没有具有非空 p1 元素的组节点的 p1 元素。

于 2013-04-16T08:21:03.263 回答
2

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

于 2015-11-06T07:10:07.390 回答
0

它实际上可以简化如下:

//group/p1[string-length() > 0]    => element text is non-empty
//group/p1[string-length() = 6]    => element text has length 6
于 2020-07-01T21:56:41.363 回答