鉴于两个XML文档,我想以编程方式识别文档的不同之处,并将差异的位置提取为XPath表达式列表。
我想用Java来做。
我还希望'差异'的定义在某种程度上是可配置的(即类似与相同 - 在空格/格式,空简单元素等方面。)
我假设我可以使用类似于XMLUnit的东西,但如果我正确理解为测试工具,XMLUnit只会识别出存在差异,但不会以可编程方式使用的方式公开细节。
答案 0 :(得分:0)
实际上,看起来可以通过覆盖DifferenceListener使用XMLUnit来完成。
final List<String> xpaths = new ArrayList<String>();
DifferenceListener myDifferenceListener = new DifferenceListener() {
public void skippedComparison(Node arg0, Node arg1) {
// Do nothing
}
public int differenceFound(Difference pDifference) {
xpaths.add(pDifference.getControlNodeDetail().getXpathLocation());
return RETURN_ACCEPT_DIFFERENCE;
}
};
Diff myDiff = new Diff(xmlDoc1, xmlDoc2);
myDiff.overrideDifferenceListener(myDifferenceListener);
myDiff.similar();
return paths;