com.sun.org.apache.xerces.internal.dom.DeferredElementImpl转换为字符串

时间:2013-03-06 18:52:23

标签: xml dom

我有一个

类型的对象
com.sun.org.apache.xerces.internal.dom.DeferredElementImpl

在下面包含XML根元素和结构。

如何从中检索XML内容为字符串?

请注意,方法toString()可用,但这已经以非常基本的方式实现,只报告类似[root: null]的字符串,因此只显示根元素名称而不显示此元素的任何其他内容。
在javadoc中,此方法被列为" NON-DOM方法,用于调试方便"。

2 个答案:

答案 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;
}