使用XPATH获取非空元素
我有以下XML使用XPATH获取非空元素,xpath,Xpath,我有以下XML <?xml version = "1.0" encoding = "UTF-8"?> <root> <group> <p1></p1> </group> <group> <p1>value1</p1> </group> <group> <p1></p1> </group&g
<?xml version = "1.0" encoding = "UTF-8"?>
<root>
<group>
<p1></p1>
</group>
<group>
<p1>value1</p1>
</group>
<group>
<p1></p1>
</group>
</root>
价值1
是否可以获取节点的最后一个值?在本例中,获取第二个组/p1的值。类似于
/root/group/p1[text()和not(../following sibling::group/p1/text())的值怎么样?
换句话说:获取包含文本的p1元素,其组父节点后面没有包含非空p1元素的组节点。此xpath也应该工作:
//group/p1[string-length(text()) > 0]
您也可以使用
[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
请发布您的xslt或xpath,它会按预期返回一个节点。这一个有效,我在这里尝试了,它提供了我想要的内容。它还可以与src//group/p1[string length(@src)>0]等属性一起使用。谢谢对我来说,这很有效,因为我的文本中只有一个空格:[string length(text())>1]非常感谢@Nora:)这不应该是相反的吗<代码>//组/p1[节点()]