如何使用JavaAPI从逻辑上比较两个XML文件?

如何使用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>

我想比较两个XML文件。我尝试过XMLUnitAPI。但这并不是我想要的。 我希望以下比较结果是真实的,即它们是相似的

文件1:

<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();
        }
    }