如何使用Java以编程方式确定两个XML文件(如XPATH)之间的差异?
给定两个XML文档,我希望通过编程确定文档的不同之处,并将差异的位置提取为XPath表达式列表 我想用Java来做 我还希望“差异”的定义在某种程度上是可配置的(即相似与相同-在空白/格式、空简单元素等方面)如何使用Java以编程方式确定两个XML文件(如XPATH)之间的差异?,java,xml,xpath,diff,Java,Xml,Xpath,Diff,给定两个XML文档,我希望通过编程确定文档的不同之处,并将差异的位置提取为XPath表达式列表 我想用Java来做 我还希望“差异”的定义在某种程度上是可配置的(即相似与相同-在空白/格式、空简单元素等方面) 我假设我可以使用类似于XMLUnit的东西,但如果我正确理解为一种测试工具,XMLUnit只会识别出其中的差异,而不会以可编程方式使用的方式公开细节。事实上,似乎可以使用XMLUnit通过重写DifferenceListener来完成 final List<String>
我假设我可以使用类似于XMLUnit的东西,但如果我正确理解为一种测试工具,XMLUnit只会识别出其中的差异,而不会以可编程方式使用的方式公开细节。事实上,似乎可以使用XMLUnit通过重写DifferenceListener来完成
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;
final List xpath=new ArrayList();
DifferenceListener myDifferenceListener=新的DifferenceListener(){
公共void skippedComparison(节点arg0、节点arg1){
//无所事事
}
公共整数差分基金(差分P差分){
add(pddifference.getControlNodeDetail().getXpathLocation());
返回-返回-接受-差异;
}
};
Diff myDiff=新的Diff(xmlDoc1,xmlDoc2);
myDiff.overrideDifferenceListener(myDifferenceListener);
myDiff.相似();
返回路径;