有没有可能用javascript得到一个给定dom节点相对路径的绝对xpath?
我找到的最接近的方法是获取节点的xpath:Get Xpath from the org.w3c.dom.Node
此外,我得到了没有唯一标识符的节点的相对xpath,你知道如何解决这个问题吗?
例如,对于:
<p>DUKE SOLINUS</p>
<div>
<p>AEGEON</p>
</div>
并且对于所选择的单词“杜克”和“AEGEON”,我分别得到xpath“/p[1]"和“/div[1]/p[1]”,当将它们传递给document.evaluate函数时,它们都求值为相同的节点“DUKESOLINUS”。因此,我只有这些相对xpath,并且没有节点。我想要的是评估这些到正确节点的相对XPath,即本例中的两个不同节点(杜克索利纳斯和爱琴海)。
更具体地说,xpath取自json注解对象:http://docs.annotatorjs.org/en/v1.2.x/annotation-format.html
任何帮助都将不胜感激!非常感谢!
2条答案
按热度按时间92dk7w1h1#
这个函数将找到一个到给定节点的绝对xpath,如果节点的顺序改变了,或者节点被添加或删除了,那么这个函数就不起作用了,但是对于静态内容来说应该没问题。
uajslkp62#
背景:我正在做一个项目,我需要知道目标Parent Node的相对XPath。我修改了上面提供的答案@James以达到我想要的效果。**下面是获取ParentNode(mainNode)到子Node的相对XPath的代码。**调用函数时可以忽略标记,它在执行时用于递归调用自身。
现在,关于您的情况和您提供的示例,其中您只有
relative xpath
和**,没有元素节点可供使用。您希望从已经拥有的relative xpaths
中获取absoute XPath
。您可以做的是从相对xpath中获取元素**,然后使用该元素获取其绝对xpath。希望它能有所帮助。