比较 Java 差异 class 中的 XML 文档 - 获取行号?

Comparing XML documents in Java diff class - getting line number?

我有以下方法:

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());
        }

来自class: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

有什么方法可以覆盖它来打印行号吗?

XMLUnit 的差异引擎在 DOM 节点级别工作,DOM API 不公开此位置信息,因此它不能作为 [=10] 的一部分使用=] 完全没有。所以不,你根本无法掌握行号。

如果可以并且您使用的是 XMLUnit 2.x API 而不是遗留的,则方法是使用 DifftoString 重载这需要一个 ComparisonFormatter 和你自己的实现。但这没有实际意义,因为 XMLUnit 1.x 和 2.x 都不能为您提供行号。