比较Java diff类中的XML文档 - 获取行号?

时间:2018-01-16 16:49:08

标签: java xml junit tostring xmlunit

我有以下方法:

public static void assertXMLEquals(String expectedXML, String actualXML) throws Exception {
            XMLUnit.setIgnoreWhitespace(true);
            XMLUnit.setIgnoreAttributeOrder(true);

            DetailedDiff diff = new DetailedDiff(XMLUnit.compareXML(expectedXML, actualXML));

            List<Difference> allDifferences = diff.getAllDifferences();

            Assert.assertEquals("Differences found: " + diff.toString(), 0, allDifferences.size());
        }

来自班级:http://www.xmlunit.org/api/java/2.4.0/org/custommonkey/xmlunit/Diff.html

如果存在差异,则打印出来:例如:

[different] Expected attribute value 'false' but was 'true' - comparing <attribute name="false"...> at //journey[1]/attribute[1]/@name to <attribute name="true"...> at /journeyDetails[1]/journey[1]/attribute[1]/@name

有没有办法可以覆盖它来打印行号?

1 个答案:

答案 0 :(得分:1)

XMLUnit的差异引擎在DOM节点级别工作,并且DOM API不公开此位置信息,因此它根本不作为Difference的一部分提供。所以不,你根本得不到行号。

如果可以而且您使用的是XMLUnit 2.x API而不是旧版API,那么可以采用toString的{​​{1}}重载来Diff与你自己的实现。但这没有实际意义,因为XMLUnit 1.x和2.x都无法为您提供行号。