【问题标题】:Select both attribute and content using xpath?使用 xpath 同时选择属性和内容?
【发布时间】:2018-09-12 01:39:21
【问题描述】:

Xpath //a[contains(@class, 'storylink')]/@* 将提取锚标签的所有属性。我的 xml 中的锚标记没有通常具有链接内容的 title 属性。有没有办法使用 XPATH 1.0 选择 锚链接中的 href 和文本内容

【问题讨论】:

  • 添加源内容的完整示例(完整的 XML 片段)和确切的预期输出。
  • @DavidEnnis 例如:http://news.ycombinator.com 我正在尝试提取标题和 href。
  • 对不起...我的意思是在您的示例中-不是让某人不得不在网页的来源上四处寻找。使用示例输入和预期输出扩展您的问题..

标签: javascript xml xpath xquery


【解决方案1】:

只需使用//a[contains(@class, 'storylink')] 选择a 元素本身,然后在返回的元素节点上使用Javascript 方法获取所需的属性和/或文本内容。

您确实可以使用 XPath 同时选择属性和文本,但如果它们都在一个查询结果中混杂在一起,那么再次将它们分开会很麻烦。

【讨论】:

  • 对于我的用例,我试图找到一个 XPath 与 Google Sheets =ImportXml() 公式一起使用,该公式直接将提取的值填充到工作表中。即一列中的标题和另一列中的href。
【解决方案2】:

如果要在单个 XPath 选择中同时选择 @hreftext(),可以使用联合运算符 |

使用 XPath 1.0,这可能是您能做的最好的事情:

//a[contains(@class, 'storylink')]/@href | //a[contains(@class, 'storylink')]/text()

使用 XPath 2.0(或更高版本),您可以避免重复锚点选择标准:

//a[contains(@class, 'storylink')]/(@href,text())

【讨论】:

    猜你喜欢
    • 2013-09-06
    • 2016-12-28
    • 2019-06-17
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2012-12-15
    • 1970-01-01
    相关资源
    最近更新 更多