【问题标题】:How to get XPATH of element in a document with multiple elements with the same id?如何在具有相同 id 的多个元素的文档中获取元素的 XPATH?
【发布时间】:2012-01-26 11:36:14
【问题描述】:

我从 Google 的 AdWords 网站获取数据,该网站有多个具有相同 id 的元素。

我想获取给定元素的 XPath。

你能否推荐一个 jQuery / JavaScript 函数来计算给定元素的 XPath假设页面可能包含多个具有相同id的元素

请不要告诉我我不应该有多个具有相同id 的元素。这不是我的主意...

【问题讨论】:

  • 包含一个带有重复 ids 的样本?
  • 您是否要求我们提供一个 XPath 表达式来获取其中某个元素?或者您是否正在寻找一个 JavaScript 函数,它接收一个元素并吐出将选择该节点的 XPath 表达式?
  • @Iwburk:我正在寻找一个接受元素并返回其 XPath 的函数。

标签: javascript jquery html dom xpath


【解决方案1】:

您知道您可以使用//*[@id='blah'][1][2] 等访问xpath。这就是您正在寻找的答案吗?

【讨论】:

  • 是的,我只是在寻找一个可以做到这一点的函数。
  • 我认为 XPath 是一个基于 [1], [2] 而不是
  • 你能解释一下“获取数据”吗,你在什么方面以某种方式在代码中“获取它”?你是怎么选择元素的?
【解决方案2】:

如果您知道您想要的元素将是该 id 的第 n 次出现,那么 Martin 的建议将起作用。

您还可以通过按多个属性搜索并定义一个元素来缩小结果范围,假设您知道 id 对于具有特定名称或类的 div 元素是唯一的。

//div[@id='hello' and @name='world']

这对你来说可能已经足够了,但如果没有,那么你可以通过相对于其他元素进行搜索来找到你想要的元素。

给定xml:

<root>
    <div id='parent1'>
        <div id='element1' />
        <div id='element2' />
    </div>
    <div id='parent2'>
        <div id='element1' name='foo' />
        <div id='element2' name='bar' />
    </div>
</root>

您可以通过以下方式获取第二个元素 2:

/root/div[2]/div[2]
//div[@id='parent2']/div[@id='element2']
//div[@id='element2' and name='bar']
//div[@id='element1' and @name='foo']/../div[@id='element2']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 2017-01-20
    • 2011-12-14
    • 2022-01-03
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多