java xml 比较,Java:使用XMLUnit比较XML

I am trying to use XMLUnit 1.3 to compare two similar XML files. Basically every thing is same. file1 is a copy of file2.

But in File2 I have changed the order of some values/elements in one node.

file1.xml

ada,cmb

file2.xml

cmb,ada

In my case, thease two files must be equal. Is it possible to achieve this with XMLUnit ?

My code

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 response

junit.framework.AssertionFailedError: but are they identical?

org.custommonkey.xmlunit.Diff

[different] Expected text value 'ada,cmb' but was 'cmb,ada' - comparing ada,cmb at /root[1]/ent[1]/value[1]/string[1]/text()[1] to cmb,ada at /root[1]/ent[1]/value[1]/string[1]/text()[1]...

Thank you for help.

Best regards,

coban

解决方案

You can create your own DifferenceListener which implements the following method:

int differenceFound(Difference difference);

This method will be called whenever a difference is detected and you can then perform some string checking on the contents of the control and test nodes to see if they mean the same to you. If they are, you can return a value of RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL, so that XMLUnit treats the nodes as being identical.

Take a look at the user guide for more information.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值