首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >唯一标识DOM节点的最佳方法是什么?

唯一标识DOM节点的最佳方法是什么?
EN

Stack Overflow用户
提问于 2010-01-15 12:09:00
回答 4查看 2.4K关注 0票数 10

如何唯一地标识HTML文档中的所有DOM节点。为了说明我的意思,这里有一个(虚构的)例子:

脚本X从document.html.

  • Script X中随机选择一个DOM节点,需要告诉脚本Y它选择了哪个DOM节点。脚本X如何唯一地标识它选择的DOM节点,以便脚本Y确切地知道它在document.html?

中是哪个节点

我非常感兴趣的是如何唯一地标识DOM节点,以便脚本Y能够识别和操作它。最好,它也应该与文本节点一起工作。我可能在考虑XPath,但我不知道如何为任何给定的节点生成唯一的XPath。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-15 12:16:47

您应该能够确定唯一的XPath,方法是从节点向根节点反向工作,并跟踪您所在的节点,以及它的同级节点,这样您就可以得到以下内容:

代码语言:javascript
代码运行次数:0
运行
复制
/a[1]/b[2]/c[101]/text()

因此,这是第二个B节点下的101B节点,因此,这是一个唯一的路径,可以引用原始文档进行复制。

票数 6
EN

Stack Overflow用户

发布于 2012-01-06 12:18:18

你可能想看看XPathGen https://github.com/amouat/XPathGen

它将为给定的DOM节点创建表单/node()[1]/node()[1]的唯一/node()[1]/node()[1]。然而,XPath也存在一些问题,即非合并的文本节点和"prolog“节点,这些节点不能仅用XPath进行唯一标识。例如,如果DOM中有以下文档:

代码语言:javascript
代码运行次数:0
运行
复制
<a>b</a>

并添加一个文本节点以成为:

代码语言:javascript
代码运行次数:0
运行
复制
<a>bc</a>

节点b和c的XPath将是相同的,但是仍然有单独的DOM节点(除非在文档上调用正常化)。如果需要处理这种情况,则需要存储文本节点的偏移量和长度。

票数 1
EN

Stack Overflow用户

发布于 2010-01-15 12:12:11

那么,导致单个节点的XPath表达式应该是唯一的。您所说的“如何为任何给定节点生成唯一的XPath”是什么意思?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2071295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档