Java XMLUnit:无法使用overrideDifferenceListener附加自定义差异Listener

Java XMLUnit:无法使用overrideDifferenceListener附加自定义差异Listener,java,xmlunit,Java,Xmlunit,我无法使用overrideDifferenceListener方法附加自定义差异侦听器 String xml1 = readFile("data/xml1.xml", Charset.defaultCharset()); String xml2 = readFile("data/xml2.xml", Charset.defaultCharset()); Diff xmlDiff = new Diff(xml1, xml2); xmlDiff.overrideD

我无法使用overrideDifferenceListener方法附加自定义差异侦听器

    String xml1 = readFile("data/xml1.xml", Charset.defaultCharset());
    String xml2 = readFile("data/xml2.xml", Charset.defaultCharset());

    Diff xmlDiff = new Diff(xml1, xml2);

    xmlDiff.overrideDifferenceListener(new MyDiffListener(listConsideredForDiff));
    assertTrue(xmlDiff.similar());
自定义差异类

class MyDiffListener implements DifferenceListener{
    private Set<String> consideredList = new HashSet<String>(); // list to consider for difference

    public MyDiffListener(ArrayList<String> list) {

        for(String element: list){
            consideredList.add(element);
        }

    }

    @Override
    public int differenceFound(Difference diff) {

        if (diff.getId() == DifferenceConstants.TEXT_VALUE_ID){
            if(!consideredList.contains(diff.getControlNodeDetail().getNode().getParentNode().getNodeName())){
                return DifferenceListener.RETURN_ACCEPT_DIFFERENCE;
            }
        }
        return DifferenceListener.RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL;

    }

    @Override
    public void skippedComparison(Node arg0, Node arg1) {
        // TODO Auto-generated method stub

    }

}
类MyDiffListener实现了DifferenceListener{ 私有集合考虑列表=新HASSET();//列表考虑差异 公共MyDiffListener(ArrayList列表){ for(字符串元素:列表){ 添加(元素); } } @凌驾 公共int差异基金(差异){ if(diff.getId()==DifferenceConstants.TEXT\u VALUE\u ID){ 如果(!consideredList.contains(diff.getControlNodeDetail().getNode().getParentNode().getNodeName())){ return DifferenceListener.return\u ACCEPT\u DIFFERENCE; } } return DifferenceListener.return\u IGNORE\u DIFFERENCE\u NODES\u idential; } @凌驾 公共void skippedComparison(节点arg0、节点arg1){ //TODO自动生成的方法存根 } } 调试时,程序控件未命中MyDiffListener的differenceFound方法内的断点

这里出了什么问题

这应该有效:

    String xml1 = "<root><a/></root>";
    String xml2 = "<root><b/></root>";

    Diff xmlDiff = new Diff(xml1, xml2);
    xmlDiff.overrideDifferenceListener(new DifferenceListener() {
            @Override
            public int differenceFound(Difference diff) {
                System.err.println("called: " + diff);
                return RETURN_ACCEPT_DIFFERENCE;
            }
            @Override
            public void skippedComparison(Node arg0, Node arg1) { }
        });
    xmlDiff.similar();
String xml1=”“;
字符串xml2=“”;
Diff xmlDiff=新的Diff(xml1,xml2);
重写DifferenceListener(新的DifferenceListener(){
@凌驾
公共int差异基金(差异){
System.err.println(“调用:“+diff”);
返回-返回-接受-差异;
}
@凌驾
public void skippedComparison(节点arg0,节点arg1){}
});
xmlDiff.similor();
散发

调用:应为元素标记名“a”,但为“b”-将at/root[1]/a[1]与at/root[1]/b[1]进行比较
也许您的文档不包含任何差异,或者您的断点正在监视错误的行

called: Expected element tag name 'a' but was 'b' - comparing <a...> at /root[1]/a[1] to <b...> at /root[1]/b[1]