如何使用Java以编程方式确定两个XML文件之间的区别为XPATH?

时间:2014-01-29 10:18:01

标签: java xml xpath diff

鉴于两个XML文档,我想以编程方式识别文档的不同之处,并将差异的位置提取为XPath表达式列表。

我想用Java来做。

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

我假设我可以使用类似于XMLUnit的东西,但如果我正确理解为测试工具,XMLUnit只会识别出存在差异,但不会以可编程方式使用的方式公开细节。

1 个答案:

答案 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;