gpt4 book ai didi

xml - 如何获取xml文件中每个节点的完整路径?

转载 作者:行者123 更新时间:2023-12-03 15:53:15 26 4
gpt4 key购买 nike

我正在使用xpath来遍历xml文件。我想知道是否有一种简单的方法来获取文件中每个节点的路径。我能想到的一种方法是将所有节点收集到一个数组中。然后传递它到一个将每个节点作为参数并不断寻找父节点的函数,直到达到文档根。所以,

            function getPathForNode(eachXmlNode, path) {
if ( eachXmlNode == rootNode ) {
return path;
} else {
getPathForNode(eachXmlNode->parent, path+path_of_parent);
}
}

请让我知道是否有其他更好的方法或者递归函数是否正确?

最佳答案

这取决于您使用的主机和 XPath 语言版本。

最简单的方法是使用具有 path 的 XPath 3功能:

//node()/path()

或者,如果您不想在路径中使用命名空间,例如:
//node()/replace(path(), "Q[{][^}]*[}]", "")

XPath 2 解决方案使用 ancestor-or-self::*string-join :
for $node in //node()
return concat( "/",
string-join(
for $a in $node/ancestor-or-self::*,
$name in node-name($a)
return concat($name, "[", $a/../node()[node-name(.) = $name]/(if (. is $a) then position() else ()), "]")
, "/"),
if ($node/self::text()) then concat("/text()[",$node/../text()/(if (. is $node) then position() else ()),"]") else ()
)

关于xml - 如何获取xml文件中每个节点的完整路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31625472/

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