2013-04-29 187 views
0

我正在使用Castor XMLDiff來查找2個XML文件之間的差異。它比較位於給定URL位置的兩個XML文檔。我的XML文件都是在運行時生成的,它們都是以String的形式出現的。我的問題是如何將字符串轉換爲XML文件,以便我可以將文件位置作爲參數傳遞。將字符串轉換爲XML文件

我有以下形式的字符串:

<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Header><MessageID>7dc1a6b9-5e84-4ee8-b801-816f4eccbe26</MessageID><MessageDate>..... 

的方法,公開的xmldiff(最後字符串的文件1,最後字符串的文件2)需要2個文件位置。而不是文件位置,我有上述字符串。以XML文檔的形式保存此字符串的最佳方法是什麼?以便我可以獲取其位置並將其傳遞給XMLDiff?

+5

'我怎樣才能將一個字符串轉換成一個XML文件' - 呃...打開一個文本文件並寫出它的字符串? – 2013-04-29 19:57:48

+0

目前還不清楚你想如何轉換。你能發表一個你想要的「之前和之後」的例子嗎? – cahen 2013-04-29 20:00:45

+0

看看http://stackoverflow.com/questions/1053467/how-do-i-save-a-string-to-a-text-file-using-java尋找一些可能的解決方案。 – 2013-04-29 20:03:56

回答

0

如果字符串包含XML數據,那麼您只需將其寫入磁盤即可。我會推薦從commons-io這樣的方法,例如FileUtils.write()

例如:

String xml = ... 
FileUtils.write(new File("path/to/output"), xml, "UTF-8"); 

當然,更換"UTF-8"與任何編碼在XML頭通告。

0

如果您使用的是Java 7,你不需要第三方庫,仍然只能通過使用新的IO API的需要很短代碼:

Path path = Files.createTempFile("prefix", null); 
Files.write(path, yourXMLString.getBytes(Charset.forName("UTF-8")) , StandardOpenOption.CREATE, StandardOpenOption.WRITE); 
String pathToTheFile = path.toString(); 

有了這個,你可以簡單地創建兩個臨時文件,用XML字符串填充它們,然後將路徑字符串提供給您的庫函數。

+0

謝謝。喜歡解決方案。 – One 2013-04-29 21:59:59