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
Xml XPATH选择所有非空节点_Xml_Xpath - Fatal编程技术网

Xml XPATH选择所有非空节点

Xml XPATH选择所有非空节点,xml,xpath,Xml,Xpath,如何选择具有某些值且不为空的所有节点?例如,我有以下XML: <bbb> <aaa/> <bbb/> <ccc>23</ccc> <ddd/> <eee>Health</eee> <fff/> </bbb> 23 健康 在这里,我想选择那些节点,它们是bbb的子

如何选择具有某些值且不为空的所有节点?例如,我有以下XML:

    <bbb>
        <aaa/>
        <bbb/>
        <ccc>23</ccc>
        <ddd/>
        <eee>Health</eee>
        <fff/>
    </bbb>

23
健康
在这里,我想选择那些节点,它们是bbb的子节点,并且具有一些值,即节点ccc和eee

选择那些属于bbb的子节点并具有某些值的节点

如果要包括仅包含空格的节点,请尝试:

/bbb/*[string()]
如果要忽略仅包含空格(
)的节点,请尝试:

这应该起作用:

/bbb/*[.!='']

值不为空的bbb的所有子节点。

仅当具有文本值时获取所有节点:

/bbb/*[text()]

您想选择只包含空格的节点还是应该忽略它们?应该忽略空格@DanielHaleyth这也将选择只包含空格的节点。这是正确的。在OP声明他只想忽略带空格的节点之前,我写了这个答案。是的,我的评论更多是针对OP(和/或未来的访问者),以便他/她知道您的xpath选择了什么。对于原始问题,您的答案完全没有问题。:-)这也会选择只包含空格的节点。我怀疑
/bbb/*[not(empty(.))]
在大多数处理器上更有效,因为不需要访问和潜在转换节点的值。
/bbb/*[text()]