我可以从 org.w3c.dom.Node 获取完整的 xpath 吗?
假设当前节点指向 xml 文档中间的某个位置。我想提取该元素的 xpath。
我正在寻找的输出 xpath 是//parent/child1/chiild2/child3/node
。节点 xpath 的父节点。只需忽略具有表达式并指向同一节点的 xpath。
没有获取 XPath 的通用方法,主要是因为没有一种通用 XPath 可以标识文档中的特定节点。在某些模式中,节点将由属性唯一标识(id
and name
可能是最常见的属性。)在其他情况下,每个元素的名称(即标签)足以唯一标识一个节点。在少数(不太可能,但可能)的情况下,没有一个唯一的名称或属性可以将您带到特定的节点,因此您需要使用基数(获取第 m 个子节点的第 n 个子节点)。 ..)。
EDIT:
在大多数情况下,创建一个依赖于模式的函数来为给定节点组装 XPath 并不困难。例如,假设您有一个文档,其中每个节点都由id
属性,并且您没有使用名称空间。然后 (I think)以下伪 Java 将根据这些属性返回 XPath。 (警告:我还没有测试过这个。)
String getXPath(Node node)
{
Node parent = node.getParent();
if (parent == null) {
return "/" + node.getTagName();
}
return getXPath(parent) + "/" + "[@id='" + node.getAttribute("id") + "']";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)