将String转换为XML文件

时间:2013-04-29 19:55:36

标签: java file-io castor

我使用Castor XMLDiff来查找2个XML文件之间的区别。它比较位于给定URL位置的两个XML文档。我的XML文件都是在运行时生成的,它们都是String的形式。我的问题是如何将String转换为XML文件,以便我可以将文件位置作为参数传递。

我有一个以下形式的字符串:

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

方法public XMLDiff(final String file1,final String file2)需要2个文件位置。我没有文件位置,而是上面提到的字符串。以XML文档的形式保存此字符串的最佳方法是什么,以便我可以获取其位置并将其传递给XMLDiff?

2 个答案:

答案 0 :(得分:0)

如果字符串包含XML数据,那么您只需将其写入磁盘即可。我建议使用FileUtils.write()中的commons-io等方法。

例如:

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

当然,将"UTF-8"替换为XML标头中公布的任何编码。

答案 1 :(得分: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字符串填充它们,然后为你的库函数提供路径字符串。