如何使用JavaAPI从逻辑上比较两个XML文件?
我想比较两个XML文件。我尝试过XMLUnitAPI。但这并不是我想要的。 我希望以下比较结果是真实的,即它们是相似的 文件1:如何使用JavaAPI从逻辑上比较两个XML文件?,java,xml,xml-parsing,Java,Xml,Xml Parsing,我想比较两个XML文件。我尝试过XMLUnitAPI。但这并不是我想要的。 我希望以下比较结果是真实的,即它们是相似的 文件1: <root> <node> <node1> xyz </node1> <node2> abc </node2> </node> <node> <node3>pqr</node3>
<root>
<node>
<node1> xyz </node1>
<node2> abc </node2>
</node>
<node>
<node3>pqr</node3>
<node4>stu</node4>
</node>
</root>
若您事先知道XML的结构,就可以为它准备类模板。您的类应该实现equals()方法。然后将源XML解组到java类实例,然后您可以测试它们是否相等。您尝试过什么吗?请向我们展示您的代码。我使用了org.custommonkey.xmlunitAPI。您的XML有多大?可以使用DOM并将这两个xml文档都保存在内存中吗。一个更好的策略是使用JAXB api将其转换为Java对象,然后您可以通过重写equals方法轻松地比较Java对象
<root>
<node>
<node3>pqr</node3>
<node4>stu</node4>
</node>
<node>
<node1> xyz </node1>
<node2> abc </node2>
</node>
</root>
public static void assertXMLSame(String path1,String path2){
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreAttributeOrder(true);
XMLUnit.setIgnoreComments(Boolean.TRUE);
FileReader fr1 = null;
FileReader fr2 = null;
try {
fr1 = new FileReader(path1);
fr2 = new FileReader(path2);
Diff diff = new Diff(fr1,fr2);
System.out.println("Similar? " + diff.similar());
System.out.println("Identical? " + diff.identical());
} catch (Exception e) {
e.printStackTrace();
}
}