2011-07-07 100 views
0

我有一个JAVA应用程序,我发送一些XML请求和接收XML响应。我首先在字符串中接收响应,然后写入一个文件并将此文件存储到文件系统中。然后,在解析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

取出字符串,从字符串中创建一个StringReader,从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()会增加一个不需要的开销。 您应该这样做: Document doc = db.parse(new InputSource(new StringReader(“”))); –