我正在尝试使用XMLUnit 1.3比较两个相似的XML文件。基本上每件事都是一样的。 file1是file2的副本。
但是在File2中,我更改了一个节点中某些值/元素的顺序。
file1.xml
<root>
<ent>
<value>
<string>ada,cmb</string>
</value>
</ent>
</root>
file2.xml
<root>
<ent>
<value>
<string>cmb,ada</string>
</value>
</ent>
</root>
就我而言,这两个文件必须相等。是否可以用XMLUnit实现呢?
我的密码
public void testXml() throws ParserConfigurationException, SAXException, IOException {
String refXmlPaht = "../test1.xml";
String testXmlPaht = "../test2.xml";
Document doc1 = TransformXML.convertXmlToDom(refXmlPaht);
Document doc2 = TransformXML.convertXmlToDom(testXmlPaht);
Diff myDiff = new Diff(doc1, doc2);
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreAttributeOrder(true);
assertXMLEqual("pieces of XML are not similar ", myDiff, true);
assertTrue("but are they identical? " + myDiff, myDiff.identical());
}
XMLUnit响应
junit.framework.AssertionFailedError: but are they identical?
org.custommonkey.xmlunit.Diff
[different] Expected text value 'ada,cmb' but was 'cmb,ada' - comparing <string ...>ada,cmb</string> at /root[1]/ent[1]/value[1]/string[1]/text()[1] to <string ...>cmb,ada</string> at /root[1]/ent[1]/value[1]/string[1]/text()[1]...
谢谢你的帮助。
最好的祝福,
科班
最佳答案
您可以创建自己的DifferenceListener
来实现以下方法:
int differenceFound(Difference difference);
只要检测到差异,就会调用此方法,然后您可以对控件和测试节点的内容执行一些字符串检查,以查看它们是否对您有意义。如果是,则可以返回值
RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL
,以便XMLUnit将节点视为相同。请查看user guide以获取更多信息。
关于java - Java:使用XMLUnit比较XML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5350807/