Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java以编程方式确定两个XML文件(如XPATH)之间的差异?_Java_Xml_Xpath_Diff - Fatal编程技术网

如何使用Java以编程方式确定两个XML文件(如XPATH)之间的差异?

如何使用Java以编程方式确定两个XML文件(如XPATH)之间的差异?,java,xml,xpath,diff,Java,Xml,Xpath,Diff,给定两个XML文档,我希望通过编程确定文档的不同之处,并将差异的位置提取为XPath表达式列表 我想用Java来做 我还希望“差异”的定义在某种程度上是可配置的(即相似与相同-在空白/格式、空简单元素等方面) 我假设我可以使用类似于XMLUnit的东西,但如果我正确理解为一种测试工具,XMLUnit只会识别出其中的差异,而不会以可编程方式使用的方式公开细节。事实上,似乎可以使用XMLUnit通过重写DifferenceListener来完成 final List<String>

给定两个XML文档,我希望通过编程确定文档的不同之处,并将差异的位置提取为XPath表达式列表

我想用Java来做

我还希望“差异”的定义在某种程度上是可配置的(即相似与相同-在空白/格式、空简单元素等方面)


我假设我可以使用类似于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.相似();
返回路径;