2

我有一个如下的 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);
4

1 回答 1

1

调用此方法

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));
于 2012-11-04T15:44:19.773 回答