我想使用XMLUnit比较2个XML文件。我在Eclipse中尝试使用下面的代码,我已经将xml文件放在本地目录中进行比较。Java XML文件比较
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import org.custommonkey.xmlunit.DetailedDiff;
import org.custommonkey.xmlunit.Diff;
import org.custommonkey.xmlunit.Difference;
import org.xml.sax.SAXException;
public class ComparisonTest {
public static void main(String[] args) {
URL url1 = ComparisonTest.class.getResource("D:/reference.xml");
URL url2 = ComparisonTest.class.getResource("D:/comparison.xml");
FileReader fr1 = null;
FileReader fr2 = null;
try {
fr1 = new FileReader(url1.getPath());
fr2 = new FileReader(url2.getPath());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
Diff diff = new Diff(fr1, fr2);
System.out.println("Similar? " + diff.similar());
System.out.println("Identical? " + diff.identical());
DetailedDiff detDiff = new DetailedDiff(diff);
List differences = detDiff.getAllDifferences();
for (Object object : differences) {
Difference difference = (Difference)object;
System.out.println("***********************");
System.out.println(difference);
System.out.println("***********************");
}
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我得到一个错误
Exception in thread "main" java.lang.NullPointerException
at com.org.comparison.ComparisonTest.main(ComparisonTest.java:21)
我无法弄清楚,为什么?
确保'url1'和'url2'不空。 –
@NikitaBeloglazov - 它不考虑ComparisonTest.class.getResource(“D:/reference.xml”);? – shockwave
否。如果找不到资源。检查[文档](http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getResource(java.lang.String)) –