我有一个
类型的对象com.sun.org.apache.xerces.internal.dom.DeferredElementImpl
在下面包含XML根元素和结构。
如何从中检索XML内容为字符串?
请注意,方法toString()
可用,但这已经以非常基本的方式实现,只报告类似[root: null]
的字符串,因此只显示根元素名称而不显示此元素的任何其他内容。
在javadoc中,此方法被列为" NON-DOM方法,用于调试方便"。
答案 0 :(得分:5)
我知道这有点晚了,但如果您仍在寻找解决方案,请尝试以下方法:
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(node);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
其中node
是DeferredElementImpl对象。 DeferredElementImpl实现Node接口,因此您应该能够像使用任何其他DOM节点一样使用变换器。
Oracle: "Writing Out a DOM as an XML File" com.sun.org.apache.xerces.internal.dom.DeferredElementImpl API
答案 1 :(得分:2)
我使用此方法从com.sun.org.apache.xerces.internal.dom.DeferredElementImpl
public static String getCharacterDataFromElement(Element e) throws Exception {
String data = "";
Node child = e.getFirstChild();
if (child instanceof DeferredElementImpl) {
DeferredElementImpl node = (DeferredElementImpl) child;
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer;
transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(node);
StreamResult result = new StreamResult(new StringWriter());
transformer.transform(source, result);
data = result.getWriter().toString();
}
return data;
}