Java xPath – 从XML提取子文档

我有一个XML文档如下:

  ...         

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

     

使用xPath,它可以很简单:

 /DocumentWrapper/DocumentBody 

Unfrotunatelly,我的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));