Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何比较2个xml字符串?_Java_Xml_Diff - Fatal编程技术网

Java 如何比较2个xml字符串?

Java 如何比较2个xml字符串?,java,xml,diff,Java,Xml,Diff,我有一个非常具体的要求,就是在java中比较两个xml字符串。我有两个xml字符串。原件和修改件。我需要将原始xml字符串与修改后的字符串进行比较,找出修改了什么 例如: 原始xml是 <Mycontacts> <contact> <firstName>Robert</firstName> <PhoneNumber>9053428756</PhoneNumber&g

我有一个非常具体的要求,就是在java中比较两个xml字符串。我有两个xml字符串。原件和修改件。我需要将原始xml字符串与修改后的字符串进行比较,找出修改了什么

例如:

原始xml是

   <Mycontacts>
        <contact>
           <firstName>Robert</firstName>
           <PhoneNumber>9053428756</PhoneNumber>
           <lastName>Bobbling</lastName>
           <mobile>4168014523</mobile>
        </contact>
        <contact> 

           <firstName>Lily</firstName>
           <PhoneNumber>9053428756</PhoneNumber>
           <lastName>Bobbling</lastName>
           <mobile>4168014523</mobile>
        </contact>
    </Mycontacts>

罗伯特
9053428756
摆动
4168014523
百合花
9053428756
摆动
4168014523
修改的xml:

    <Mycontacts>
        <contact>
           <firstName>Robert</firstName>
           <PhoneNumber>40454321333</PhoneNumber>
           <lastName>Bobbling</lastName>
           <mobile>4168014523</mobile>
        </contact>
      </Mycontacts>

罗伯特
40454321333
摆动
4168014523
因为这里修改了1个联系人,删除了1个id,所以我想形成2个xml树。1是修改xml,1是删除xml

修改xml:

     <contact>

            <firstName>Robert</firstName>
        <PhoneNumber>40454321333</PhoneNumber>
        <lastName>Bobbling</lastName>
           <mobile>4168014523</mobile>
        </contact>

罗伯特
40454321333
摆动
4168014523
删除xml:

     <contact>
           <name>Lily</name>
      </contact>

百合花

如何使用JavaAPI实现这一点?解析每个节点并为每个联系人条目创建映射是否是一个好的选择?

假设XML布局不随时间变化,我会将XML文件解析为Java对象并进行比较。您可以使用或来执行此操作。

在一般情况下,这是一个非常困难的问题,例如,如果您希望检测到元素名称已更改,但值保持不变,或者如果您希望检测到两个元素仍然存在,但顺序已颠倒。如果您对数据的结构有所了解,例如,您能够区分哪些值充当标识符,那么问题就简化为在另一个文件中查找具有相同标识符的元素,然后询问其非标识属性中的哪些已更改


重要的一点是,在尝试设计之前,您需要更多地说明需求。

一般来说,您必须构建一个排序树来比较xml数据,但在您的情况下,映射就足够了吗