我有以下 XML
<?xml version = "1.0" encoding = "UTF-8"?>
<root>
<group>
<p1></p1>
</group>
<group>
<p1>value1</p1>
</group>
<group>
<p1></p1>
</group>
</root>
是否有可能获得最后一个具有价值的节点?在这种情况下,获取第二组/p1 的值。
我有以下 XML
<?xml version = "1.0" encoding = "UTF-8"?>
<root>
<group>
<p1></p1>
</group>
<group>
<p1>value1</p1>
</group>
<group>
<p1></p1>
</group>
</root>
是否有可能获得最后一个具有价值的节点?在这种情况下,获取第二组/p1 的值。
这个 xpath 也应该可以工作:
//group/p1[string-length(text()) > 0]
像这样的东西怎么样/root/group/p1[text() and not(../following-sibling::group/p1/text())]
换句话说:获取具有文本且其组父级后面没有具有非空 p1 元素的组节点的 p1 元素。
您也可以使用[not(node())]
选择器。例子://group/p1[not(node())]
它实际上可以简化如下:
//group/p1[string-length() > 0] => element text is non-empty
//group/p1[string-length() = 6] => element text has length 6