Eclipse 平台 XML 比較
XML 比較外掛程式可讓您將兩個 XML 文件進行結構化比較。它會傳回一個差異樹狀結構,指出哪些 XML 元素已被加入或移除,以及(修改過的 XML 元素)屬性或主體內容有哪些差異。
安裝外掛程式
- 將 org.eclipse.compare.examples.xml 資料夾複製到 Eclipse 的 plugins 子資料夾中。
使用外掛程式
在以副檔名 .xml 比較檔案時,會自動採用外掛程式。
依預設,XML 比較會使用未排序的比較方法,這個方法並不考慮 XML 元素在文件中的出現順序,
而是選出最相似的元素,作為相符的元素。另外還有一個排好順序的比較方法,它完全按照它們出現在文件中的順序來比較 XML 元素。不過,在大部分的情況下,這個方法用處不大。
您可以從結構視圖的工具列的下拉清單,來變更這個比較方法。
如果 XML 文件所含的元素,可以由某個屬性或子項元素的文字專門識別,則我們建議您為這類型的 XML 文件,建立一個 ID 對映架構。
請參閱教學指導和範例,以取得使用外掛程式的詳細資訊。
ID 對映方法
ID 對映架構可以為 XML 元素,指定一個專門識別這個元素的屬性或子項元素文字。此舉可以確保在比較程序中比對正確的元素,並且得以彼此比對。如果沒有指定任何 ID 對映給 XML 元素,則採用一般的比對演算法。不過,一般比對演算法不見得都會傳回您所要的結果。因為一般比對演算法是在兩個被剖析的樹狀結構中比對節點,把差異降到最低。不過常會發生一種情形,就是兩個被比對的 XML 元素雖然在結構上很類似,但卻代表兩個完全不同的資訊實體。
排好順序的項目
使用預設的未排序比較時(不一定有 ID 對映),有時候會需要指定讓某些元素的子項,以排好順序的方式(而不是不排順序的方式)來進行比對。比方說,在比較 ANT 檔案時,target 元素的子項出現順序就很重要。
遇到這種情況時,可以建立一個排好順序的項目。排好順序的項目可以指定,由路徑識別的 XML 元素的直屬子項,
是以排好順序的方式加以比較(不過,屬性仍是以未排序的方式比較)。除非另外指定,否則這些子項的子項會繼續以不排序的方式比較。定義 ID 對映架構和排好順序的項目
ID 對映架構可以用下列三種方法建立:
- 繼承 idMapping 延伸點
- 使用 XML 比較喜好設定頁面。
- 使用工具列的建立新的 ID 對映架構按鈕和快速功能表
方法 1 會建立一個所謂的內部對映架構。內部 ID 對映架構無法在執行時期時編輯。不過,您可以使用「喜好設定」頁的編輯副本按鈕,建立一份可以編輯的內部 ID 對映架構副本。
方法 2 和 3 可以建立所謂的使用者對映架構。它們是由使用者在執行時期所建立,而且可以在「喜好設定」頁隨時修改。
內部和使用者對映架構可以關聯到某個副檔名。因此,在比較兩個這個副檔名的 XML 檔時,會自動採用具有這個副檔名的特定 ID 對映架構。
在為特定的 XML 元素建立或編輯 ID 對映時,必須指定四個項目(請參閱範例):
- 元素名稱。
- 元素路徑。這是元素的路徑(從 XML 文件的根到該元素的母項)。
- 識別該元素的 ID 名稱。
- 第 3 點中的 ID 名稱是該元素的屬性名稱,還是其中一個子項的名稱(在這些案例中,這個子項元素的文字被視為 ID)。
延伸點
在 XML 比較外掛程式中,只有一個延伸點可以使用。其用途是建立內部 ID 對映架構: