2013-03-22 81 views
0

我們在比較兩個xml文件時存在嚴重的問題。我們需要根據關鍵值找出兩個xml文件之間的差異。我們需要xml標記和xml標記值的差異。鍵值可以存在於文件中的不同位置。例如,下面是兩個xml文件示例,其中id是學生的鍵。首先存在StudentDetails_one.xml文件ID 111,但是在StudentDetails_two.xml中存在id 222第一。XML文件差異

StudentDetails_one.xml

<Student> 
    <Id>111</Id> 
    <Name>AAA</Name> 
    <City>ABCD</City> 
    <Dept>CS</Dept> 
    <Mobile Number>11111</Mobile Number> 
</Student> 
<Student> 
    <Id>222</Id> 
    <Name>BBB</Name> 
    <City>ABCD</City> 
    <Dept>IT</Dept> 
    <Mobile Number>22222</Mobile Number> 
</Student> 

StudentDetails_two.xml

<Student> 
    <Id>222</Id> 
    <Name>CCC</Name> 
    <City>ABCD</City> 
    <DEPT>IT</DEPT> 
    <Mobile Number>22222</Mobile Number> 
</Student> 
<Student> 
    <Id>111</Id> 
    <Name>AAA</Name> 
    <City>ABCD</City> 
    <Dept>CS</Dept> 
    <Mobile Number>11111</Mobile Number> 
</Student> 

的下面兩點不同可以在上面2個文件被注意到。

  1. 學生ID 222具有在兩個不同名稱值這2個XML files.In先向其BBB和在第二個文件中它的CCC。
  2. 學生ID 222的xml標記控制差異爲部門在第一個文件中並且DEPT在第二個文件中。

有什麼工具或技術可以找出上述兩點區別嗎?

注:以上一個僅僅是一個example.We有XML文件與數百tags.So它真的很難找出區別的學號位置是在這兩個文件的不同

+0

對於標籤匹配,您可以將它們小寫;如果他們然後匹配小寫明智的話,你可以用原始形式對照他們。如果他們然後不同它是一個拼寫錯誤的副本。最好使用API​​讀取XML結構爲對象/字典/數組類型,以便您可以遍歷它們並查看是否存在與TAG或VALUE不同的ID重複項。不應該那麼辛苦。你更喜歡什麼腳本/編程語言? – 2013-03-22 11:35:24

+0

嗨Allendar..nice info..thanks..i一般使用C++語言.. – user2090833 2013-03-22 14:12:16

+0

你可以做一些在C++中的XML解析器的研究(例如:http://stackoverflow.com/questions/170686/best-open-xml -parser換-C)。你主要需要的是將XML從解析器讀出到多維數組中。從這一點開始,你可以通過該數組做循環(+內循環),並檢查是否有衝突的匹配。根據這些衝突,您可以編寫一個合併輸出(再次通過XML解析器),並將其寫入新的XML文件以及發現/更改/合併(執行一些人工驗證)的報告。 – 2013-03-22 14:16:31

回答

0

有許多工具可用於有效的文件/文件夾比較。

下面是其中的一些,

(1)Araxis合併

(2)無法比擬的(我個人推薦這個)

希望它能幫助。

+0

我同意Beyond Compare - 它有一個規則驅動的比較,它將考慮到Xml語法,等等。很久以前我的生活很多! – 2013-03-22 11:37:33

+0

這些不是用於與某些參數進行純鏡像匹配嗎? OP需要的是一個XML解析器,其中有一些代碼將條目與另一個進行比較。也許我錯了,但請向OP驗證使用這些工具進行XML比較和錯位。 -1爲缺乏解釋壽,對不起.. – 2013-03-22 11:37:50

+0

感謝您的答覆..我嘗試與Araxis合併。但問題是,它沒有像上面的例子那樣顯示基於關鍵值的差異。請告訴我這個工具是否適用於這些工具。 – user2090833 2013-03-22 11:39:38

-1

如果我得到你想要的,有很多工具。 kdiff是一個很好的。

+0

爲什麼我們比較「文件」?我們必須比較XML,結果可能與正常的文件比較有很大不同。 -1的缺乏解釋.. – 2013-03-22 11:38:56

+0

@ Tommi ..我認爲kdiff沒有找到關鍵基礎上的差異..只是逐行比較.. – user2090833 2013-03-22 13:52:20

+0

是的,@Allendar已經指出它,所以它看起來像我沒有得到你想要的:) – Tommi 2013-03-22 14:15:05

0

這裏是圖像

http://postimg.org/image/arf785kg3/

這是我所得到的,當我試圖給定的例子。這是你正在尋找的東西嗎? ?

+0

不,這是不是我正在尋找..因爲這裏的學生ID 222部門是一樣的,它是IT。它應該以身份證爲關鍵找到差異。希望它現在明確.. – user2090833 2013-03-22 13:42:23