两个XML DOC的比较正在失败,因为文档来自两个来源

时间:2015-01-09 13:25:55

标签: java xml

我已使用以下代码将字符串转换为XML文档:

String xmlStr = "<msg><uuid>12345</uuid></msg>"
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
  builder = factory.newDocumentBuilder();
  Document doc = builder.parse(new InputSource(new StringReader(xmlStr)));
  return doc;
} catch (Exception e) {
  throw new RuntimeException(e);
}

然后我将XML文件转换为具有以下内容的文档:

File file = new File("src/test/resources/xmlForJunitTest.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document expectedDoc = db.parse(file);

最后我比较了两个文件:

Document actualDoc = XmlUtils.convertStringToDocument(xmlString);
Diff myDiff = new Diff(expectedDoc, actualDoc);
assert (myDiff.similar());

此测试使用格式如下的XML文件(xmlForJunitTest.xml)传递:

<msg><uuid>12345</uuid></msg>

它失败了:

<msg>
   <uuid>12345</uuid>
</msg>

请你能说明为什么会发生这种故障,以及解决方案是什么?

1 个答案:

答案 0 :(得分:0)

断言失败,因为一个文档包含空格,而另一个文档不包含空格。我相信你需要查看normalizeWhitespace中的XmlUnit标志(假设你正在使用它)。