我使用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?
答案 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字符串填充它们,然后为你的库函数提供路径字符串。