【问题标题】:XPath: How to select node with some attribute by index?XPath:如何通过索引选择具有某些属性的节点?
【发布时间】:2011-04-28 12:36:35
【问题描述】:

我有几个具有某些特定属性的节点,我需要按索引选择其中一个。例如,我需要选择第二个 <div> 与 'test' 类 - //div[@class='test'][2] 不起作用。

有没有办法通过索引选择具有某些属性的节点?怎么做?

【问题讨论】:

    标签: xpath


    【解决方案1】:

    这是一个常见问题解答

    在 XPath 中,[] 运算符比 // 伪运算符具有更高的优先级(绑定更强)。

    因此,表达式:

    //div[@class='test'][2]
    

    选择所有class 属性为“test”的div 元素,并且谁(div 元素)是其父级的第二个这样的div 子级。这不是你想要的。

    使用

    (//div[@class='test'])[2]
    

    【讨论】:

      【解决方案2】:

      我相信根据 XML 规范,属性不被视为有顺序。
      Note that the order of attribute specifications in a start-tag or empty-element tag is not significant.
      here 我认为你最好重构你的结构,使属性顺序不描述任何东西。如果您能提供更多详细信息,我们或许可以提供建议。

      编辑:重新阅读您的帖子,看起来您正在尝试查找节点顺序而不是属性顺序。节点顺序是允许的,并且您的语法看起来不错。你用什么软件做这个?

      【讨论】:

      • 这是我的错 - 解析器隐藏了标签。我添加了正确的格式。我使用 PHP DOM 扩展 ua.php.net/manual/en/book.dom.php,似乎这个扩展提供了 XPath 的弱实现
      • 你试过//div[@class='test'][position()=2]
      猜你喜欢
      • 2013-11-30
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 2010-11-22
      相关资源
      最近更新 更多