2011-07-07 18 views
0

私はいくつかのXMLリクエストを送信し、xmlレスポンスを受け取るJAVAアプリケーションを持っています。私は最初に文字列で応答を受け取り、次にファイルを書き、このファイルをファイルシステムに格納します。次に、xmlレスポンスファイルを解析する際に、私はこれをファイルシステムからアクセスし、さらなるビジネスロジックのためにいくつかのデータを使用しています。 xmlレスポンスの解析

File file = new File("log\\XMLMessage\\LastXMLResponse.xml"); 

      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc = db.parse(file); 

は、今私は、Java Web Startの(JWS)アプリケーションを介して、このJAVAアプリケーションを配布するために考えていますし、私が知っているように定期的に、このファイルに変更があるだろうので、私はjarファイルにこのファイルを維持することはできません。

あなたは私に何を提案しますか?文字列を直接解析することはできますか(レスポンスをファイルに保存する必要はありません)?

Document doc = db.parse(xmlMessage); 

このファイルはどこに保存できますか?私はこのファイルを自分のアプリケーションのユーザーに見せたくありません。

+0

あなたが刺さにしていないストリームで応答を受信なぜ、そうでない場合は、あなたがそれを直接消費することができます。 –

答えて

0

Stringを取得し、StringReaderをStringから作成し、StringReaderからInputSourceを作成してから、DocumentBuilderで構文解析を呼び出します。

0

はい、文字列を直接解析することができます。ファイルに格納する必要はありません。

はこれを試してみてください:

String xml = "<xml></xml>"; 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(new ByteArrayInputStream(xml.getBytes())); 
System.out.println(doc); 
+0

そして、文字列を直接読み取ることができます。バイトを経由する必要はありません;) – ThomasRS

+0

はい、トーマスには理由があり、getBytes()の呼び出しで不必要なオーバーヘッドが追加されます。 次のようにする必要があります。 ドキュメントdoc = db.parse(新しいInputSource(new StringReader( ""))); –