Java XMLUnit:无法使用overrideDifferenceListener附加自定义差异Listener
我无法使用overrideDifferenceListener方法附加自定义差异侦听器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
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]