比较 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 而不是遗留的,则方法是使用 Diff
的 toString
重载这需要一个 ComparisonFormatter
和你自己的实现。但这没有实际意义,因为 XMLUnit 1.x 和 2.x 都不能为您提供行号。
我有以下方法:
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 而不是遗留的,则方法是使用 Diff
的 toString
重载这需要一个 ComparisonFormatter
和你自己的实现。但这没有实际意义,因为 XMLUnit 1.x 和 2.x 都不能为您提供行号。