gpt4 book ai didi

xml - 使用XPath是否有可能以String的形式获取目标节点路径中每个节点的名称?

转载 作者:行者123 更新时间:2023-12-03 16:17:42 25 4
gpt4 key购买 nike

使用XPath是否有可能以String的形式获取目标节点路径中每个节点的名称?

Example.xml

<parent>
<childOne>
<target>true</target>
</childOne>

<childTwo>
<target>true</target>
</childTwo>

<childThree>
<target>false</target>
</childThree>
</parent>


选择目标为真的所有祖先

//node()[target = "true"]/ancestor-or-self::*

是否有可能得到这个结果

"parent/childOne/target"

"parent/childTwo/target"

最佳答案

XPath 2.0表达式如何:

string-join(for $node in //node()[text() = 'true'] return string-join(for $ancestor in $node/ancestor-or-self::* return concat('/',local-name($ancestor)), ''), '&#10;')


这将返回由换行符分隔的路径字符串。如果要为每个路径使用单独的结果节点,则可能要使用

for $node in //node()[text() = 'true'] return string-join(for $ancestor in $node/ancestor-or-self::* return concat('/',local-name($ancestor)), '')


代替。

请注意,我必须将 target = 'true'更改为 text() = 'true'才能包含最低级别的标签。

连接部分路径字符串的技巧是受此答案启发的: Concatenate multiple node values in xpath

关于xml - 使用XPath是否有可能以String的形式获取目标节点路径中每个节点的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26896850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com