将字符串转换为XML文件

问题描述:

我正在使用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://*.com/questions/1053467/how-do-i-save-a-string-to-a-text-file-using-java寻找一些可能的解决方案。 – 2013-04-29 20:03:56

如果字符串包含XML数据,那么您只需将其写入磁盘即可。我会推荐从commons-io这样的方法,例如FileUtils.write()

例如:

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

当然,更换"UTF-8"与任何编码在XML头通告。

如果您使用的是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