2012-08-31 104 views
0

我有一個非常具體的需求比較在Java中的2個XML字符串。我有2個xml字符串。原始和修改。我需要將原始的xml字符串與修改後的字符串進行比較,並找出修改的內容。如何比較2個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的做什麼?解析每個節點併爲每個聯繫人條目創建一個映射是一個不錯的選擇?

+0

一般來說,你必須建立一個排序樹來比較xml數據,但在你的情況下,地圖是否足夠 – Hachi

回答

1

我會解析XML文件,Java對象和比較這些,假設XML佈局不隨時間變化。您可以使用XStreamJAXB來做到這一點。

0

在一般情況下非常困難的問題,例如,如果要檢測元素名稱已更改但值保持不變,或者如果要檢測兩個元素仍然存在但訂單已存在被扭轉。如果你知道關於數據結構的一些東西,並且例如你能夠區分哪些值作爲標識符,那麼這會容易得多,所以問題簡化爲在具有相同標識符的另一個文件中查找元素,然後詢問其非識別性質已經改變。

重要的一點是,您需要在嘗試設計之前對需求進行更多的說明。