Java xPath - 从 XML 中提取子文档

标签 java xml xpath extract

我有一个 XML 文档如下:

<DocumentWrapper>
  <DocumentHeader>
    ...
  </DocumentHeader>
  <DocumentBody>
    <Invoice>
      <Buyer/>
      <Seller/>
    </Invoice>
   </DocumentBody>
 </DocumentWrapper>

我想从中提取 DocumentBody 元素的内容作为字符串,原始 XML 文档:

<Invoice>
  <Buyer/>
  <Seller/>
</Invoice>

使用 xPath 可以很容易地获得:

/DocumentWrapper/DocumentBody

不幸的是,我的 Java 代码不想按我的意愿工作。它返回空行而不是预期结果。是否有机会这样做,或者我必须返回 NodeList,然后从中生成 xml 文档?

我的 Java 代码:

XPathFactory xPathFactoryXPathFactory.newInstance();
XPath xPath xPathFactory.newXPath();
XPathExpression xPath.compile(xPathQuery);

String result = expression.evaluate(xmlDocument);

最佳答案

调用这个方法

String result = expression.evaluate(xmlDocument);

和调用这个是一样的

String result = (String) expression.evaluate(xmlDocument, XPathConstants.STRING);

返回结果节点的字符数据,如果结果节点是元素,则返回所有子节点的字符数据。

你可能应该这样做:

Node result = (Node) expression.evaluate(xmlDocument, XPathConstants.NODE);
TransformerFactory.newInstance().newTransformer()
            .transform(new DOMSource(result), new StreamResult(System.out));

关于Java xPath - 从 XML 中提取子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217397/

相关文章:

java - 在 Java 中使用 DOM 从 XML 文件中检索信息

ruby-on-rails - 如何使用 Nokogiri 导航 DOM

java - 如何在jboss 6.2中部署分解文件夹

java - 有人可以帮助我告诉我以下算法的复杂性吗?

java - 如何使用 Java 从 Web 服务保存大文件?

xml - 如何从 XPath 返回的数组中将数据插入到配置单元表中

php - 使用 DOM 和 xpath 设置无样式链接的样式

xpath - 如何在xpath中检查 parent 的后继兄弟

java - 使用 while 循环和递归方法计算 Pi (Java)

java - 具有相同依赖关系的 Dagger 2 多个组件