1

WebサービスからSOAPメッセージを受け取り、以下のコードを使用して応答文字列をXMLファイルに変換できます。これは正常に機能します。しかし、私の要件は、SOAPメッセージをファイルに書き込まないことです。このXMLドキュメントオブジェクトをメモリに保持し、さらに処理するためにいくつかの要素を抽出する必要があります。ただし、以下のドキュメントオブジェクトにアクセスしようとすると、空になります。

String誰かが(ファイルに書き込むことなく)メモリ内のXMLオブジェクトに変換する方法を教えてもらえますか?

String xmlString = new String(data); 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  

DocumentBuilder builder;  
try  
{  
    builder = factory.newDocumentBuilder();  

    // Use String reader  
    Document document = builder.parse( new InputSource(  
            new StringReader( xmlString ) ) );  

    TransformerFactory tranFactory = TransformerFactory.newInstance();  
    Transformer aTransformer = tranFactory.newTransformer();  
    Source src = new DOMSource( document );  

    Result dest = new StreamResult( new File( "xmlFileName.xml" ) );  
    aTransformer.transform( src, dest );

}
4

2 に答える 2

0

コードの最後の5行を削除すると、DOMドキュメントがメモリに保存されます。このドキュメントは、ローカル変数ではなく、あるフィールドに保存してください。

それでも不十分な場合は、 「以下のドキュメントオブジェクトにアクセスしようとすると、空になります」とはどういう意味かをコードで説明してください。

于 2012-10-02T21:35:00.133 に答える
0

JB Nizetは正しいです、最初のステップはからDOMを作成しますxmlString。これにより、xmlString(またはSOAPメッセージ)がメモリ内のドキュメントに読み込まれます。次の手順(変換に関連するすべてのこと)は、DOMをファイル(xmlFileName.xml)にシリアル化することですが、これはあなたがやりたいことではありませんか?

DOMが空であると言ったとき、DOMの内容をで印刷しようとして、document.toString()「[document:null]」のようなものを返したと思います。これは、DOMが空であることを意味するものではありません。実際、DOMにはデータが含まれています。ここで、DOM APIを使用して、ドキュメント内のノードにアクセスする必要があります。次のようなものを試してくださいdocument.getChildNodes(), document.getElementsByTagName(), etc

于 2012-10-02T21:57:53.363 に答える