0

我对比较 java 中的 2 个 xml 字符串有一个非常具体的要求。我有 2 个 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>

修改后的xml:

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

由于此处修改了 1 个联系人并删除了 1 个 ID,因此我想形成 2 个 xml 的树。1 是 modify_xml,1 是删除 xml

修改xml:

     <contact>

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

删除 xml:

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

如何使用 java API 来做到这一点?解析每个节点并为每个联系人条目创建地图是一个不错的选择吗?

4

3 回答 3

1

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

于 2012-08-31T07:22:38.957 回答
1

http://xmlunit.sourceforge.net/

于 2012-08-31T07:17:19.887 回答
0

一般情况下非常困难的问题,例如,如果您想检测元素名称已更改但值保持不变,或者您想检测两个元素仍然存在但顺序已颠倒。如果您了解数据的结构会容易得多,例如您能够区分哪些值充当标识符,因此问题减少到在另一个文件中找到具有相同标识符的元素,然后询问哪个它的非识别属性已经改变。

要点是,在尝试设计之前,您需要详细说明需求。

于 2012-08-31T08:34:14.283 回答