【问题标题】:XPath query to select all href attributes of <a> tag, which 'class' attribute equals specified stringXPath 查询选择 <a> 标记的所有 href 属性,其中 'class' 属性等于指定的字符串
【发布时间】:2010-04-22 14:35:58
【问题描述】:

我不知道为什么以下查询不起作用:

//a/@href[@class='specified_string']

【问题讨论】:

  • 由于类属性可能包含多个用空格分隔的类名,您可能实际上想要://a[contains(concat(' ',normalize-space(@class),' '), 'some_class_name')]/@href
  • @singpolyma:好点。只是一个挑剔:它是' some_class_name '(周围有空格),不是 'some_class_name'

标签: xpath


【解决方案1】:

反过来试试:

//a[@class='specified_string']/@href

毕竟class&lt;a&gt; 元素的属性,而不是href 属性的属性。

【讨论】:

  • 是的,我认为它有效,但问题是查询返回属性,我想检索属性的值。我正在用 Java 编写它,它返回了长度为 2 的 NodeList。当我尝试打印它时,它只打印两个 xml 标头: xml version="1.0" encoding="UTF-8"?> 两个,并且只有两个查询将匹配的链接,所以它似乎工作。但我想得到这个hrefs的值。该怎么做?
  • NodeList 应该包含代表href 属性的Nodes 列表。因此,只需在这些节点上运行 getNodeValue() 即可为您提供 href 属性值。
  • 这在我的情况下不起作用,尽管我认为这是完全正确的。我的 Chrome 可以使用 //a[@name= "topic"] 来提取正确的 a 元素。但是//a[@name= "topic"]/@href 返回一个 [, , , , , ] 列表,就好像没有 href 属性一样。这是一个“a 元素”,例如:XXX
  • 只是为了让你们知道 Xpath确实有效。但是 Chrome 控制台以某种方式显示了一个类似空的列表。当我将该列表分配给一个变量并打印该变量时,我想要的一切都在那里。我将我的原始评论留在那里,以便其他有相同问题的人可以联系。
【解决方案2】:

属性不能有属性。只有元素可以有属性。

原来的 XPath 表达式:

//a/@href[@class='specified_string'] 

选择任何a 元素的任何href 属性,使得href 属性具有属性class,其值为'specified_string'

你想要的是

//a[@class='specified_string']/@href 

即:任何a 元素的href 属性,其class 属性值为'specified_string'

【讨论】:

    【解决方案3】:

    你基本上说你正在寻找一个名为href的属性,其属性(这是错误)class应该等于specified_string

    但是你需要找到一个元素a的属性href,它的属性classspecified_string

    (ndim 的回答与我的重叠)

    【讨论】:

      【解决方案4】:

      锚标签中没有类属性我只有href。它使用//*[@href='value'] 识别,但//*a[@href='value'] 不起作用

      【讨论】:

        猜你喜欢
        • 2012-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-03
        • 1970-01-01
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多