1

タイプのオブジェクトがあります

com.sun.org.apache.xerces.internal.dom.DeferredElementImpl

その下に XML ルート要素と構造が含まれています。

これから XML コンテンツを文字列として取得するにはどうすればよいですか?

メソッドtoString()は利用可能ですが、これは非常に初歩的な方法で実装されており、 のような文字列のみを報告することに注意してください[root: null]。したがって、ルート要素名のみを表示し、この要素のそれ以上の内容は表示しません。
javadoc では、このメソッドは「デバッグに便利な非 DOM メソッド」としてリストされています。

4

2 に答える 2

5

これが少し遅れていることはわかっていますが、まだ解決策を探している場合は、これを試してください。

TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();

DOMSource source = new DOMSource(node);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result); 

nodeDeferredElementImpl オブジェクトです。DeferredElementImpl は Node インターフェースを実装しているため、他の DOM ノードと同様にトランスフォーマーを使用できるはずです。

Oracle: 「DOM を XML ファイルとして書き出す」 com.sun.org.apache.xerces.internal.dom.DeferredElementImpl API

于 2013-08-14T20:20:38.077 に答える
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;
}
于 2016-05-24T15:10:05.180 に答える