【问题标题】:Return node names and Text as STring with XPath使用 XPath 将节点名称和文本作为字符串返回
【发布时间】:2013-10-19 09:37:30
【问题描述】:

我尝试将 Html 页面转换为 ecs 对象。为此,我使用部分 XPath。 (我正在用 Java 编码) 唯一的问题是,我希望 XPath 将所有节点名称和文本作为字符串返回。这有点难以解释,这里举个例子:

HTML 文档:

<html>
<head>
    <title>Derp</title>
</head>

<body>
    <div>nonsense&lt;IOText&gt;</div>
    <a href="http://google.de/">It's Google!</a>
</body>

现在我要执行以下 XPath:

/html

并希望结果如下所示:

 <head>
    <title>Derp</title>
</head>

<body>
    <div>nonsense&lt;IOText&gt;</div>
    <a href="http://google.de/">It's Google!</a>
</body>

有这样的功能吗?

【问题讨论】:

  • 好吧,直到现在我只是在寻找一个解决方案......但我找不到一个或想到一个:/ 我尝试了一些函数,如 text()(返回 null,什么是合理的)和一些其他 XPath 函数,它们只是抛出错误,因为 Java 不知道它们(name() 或 local-name())
  • 所以你只想删除&lt;html&gt;?
  • 不,我想要标签内的文本,我使用 XPath 请求。另一个例子:如果我执行 /html/head 它应该返回 Derp

标签: java html xml xpath


【解决方案1】:

这不是 Java 问题,而是 XSLT 问题。我相信这会做你想要的:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" omit-xml-declaration="yes"/>
  <xsl:template match="/html/*">
    <xsl:copy-of select="."/>
  </xsl:template>
</xsl:stylesheet>

我从未找到证据证明您声称 Java 的 XPath 类不处理 XSLT 函数。您能否提供一个已知可与其他 XSLT 工具一起使用但不能与 Java 的 XPath 一起使用的 XSL 样式表?

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2016-11-27
    • 2014-12-26
    • 2011-05-13
    • 1970-01-01
    • 2020-08-17
    • 2021-05-29
    • 1970-01-01
    • 2010-11-27
    相关资源
    最近更新 更多