0

我正在使用 Castor XMLDiff 来查找 2 个 XML 文件之间的差异。它比较位于给定 URL 位置的两个 XML 文档。我的两个 XML 文件都是在运行时生成的,它们都是字符串的形式。我的问题是如何将字符串转换为 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?

4

2 回答 2

0

如果您使用的是 Java 7,则不需要 3rd 方库,并且仍然只需要通过使用新的 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 字符串填充它们,然后将路径字符串提供给您的库函数。

于 2013-04-29T20:12:54.003 回答
0

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

例如:

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

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

于 2013-04-29T20:03:29.853 回答