Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XPATH获取非空元素_Xpath - Fatal编程技术网

使用XPATH获取非空元素

使用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

<?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[节点()]