【问题标题】:How do I get rid of the tags in XPath如何摆脱 XPath 中的标签
【发布时间】:2020-03-02 15:04:48
【问题描述】:

我有一堆包含大量数据的 html 文件,我想提取其中的重要部分。

这些文件都非常相似;我必须搜索包含某个关键字的<tr>。此表行的第三列始终包含我正在搜索的“块”的名称(它是几个表行)。

//body/table/tbody/tr[td = "Deployed to"]/td[3]/div//span[text()]

通过这个 XPath 查询,我得到了名称(也许一个,也许更多) 问题是,如何去掉数据周围的标签?

现在我的输出是这样的:

<span class="log_entry_text">Name1</span><span class="log_entry_text">Name2</span><span class="log_entry_text">Name3</span>

我想要这样的东西: Name1 Name2 Name3 所以我可以用它更容易地提取这些块。 使用 string() 我只能提取第一个元素(结果是:Name1)

谢谢你帮助我!

【问题讨论】:

    标签: html xml xslt xpath xquery


    【解决方案1】:

    只需使用 data() 元素(例如 data(//body/table/tbody/tr[td = "Deployed to"]/td[3]/div//span[text()]) )包装您的 xpath 以进行检索文本。

    【讨论】:

    • 你的帮助;我接受了你以前的回答://body/table/tbody/tr[td = "Deployed to"]/td[3]/div//span/text() 它对我的目的非常有效。
    【解决方案2】:

    您的 XPath 表达式要求检索 span 元素,这就是它返回的内容。如果您在输出中看到带有尖括号的标签,那是因为接收应用程序处理和呈现 XPath 结果的方式。

    如果您使用的是 XPath 2.0+ 或 XQuery 1.0+,您可以使用将几个 span 元素组合成一个字符串

    string-join(//path/span, ' ')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多