我正在爲使用JDOM讀取和寫入XML的代碼編寫單元測試。因此,我需要一些方法將我的代碼生成的JDOM Element
與參考Element
進行比較,以確保它們是等價的(同名,名稱空間和屬性,以及遞歸地爲其子節點添加相同內容)。如何比較兩個元素的等價性?
不幸的是,僅Element.equals
測試是否元素是指稱相等。我怎樣才能最好地確定兩個元素是否代表相同的樹?
我正在爲使用JDOM讀取和寫入XML的代碼編寫單元測試。因此,我需要一些方法將我的代碼生成的JDOM Element
與參考Element
進行比較,以確保它們是等價的(同名,名稱空間和屬性,以及遞歸地爲其子節點添加相同內容)。如何比較兩個元素的等價性?
不幸的是,僅Element.equals
測試是否元素是指稱相等。我怎樣才能最好地確定兩個元素是否代表相同的樹?
以下應檢查是否兩個XML元素是等效的:
String myElementString = XMLOutputter.outputString(myElement);
String testElementString = XMLOutputter.outputString(testElement);
boolean equals = myElementString.Equals(testElementString);
我只能想到的三種方式:
org.jdom.output.XMLOutputter
從每個元素創建一個XML字符串並比較字符串。所有令人討厭的公平!
假設元件1是這樣的
我認爲你誤會了。輸出方法是相同的,所以如果元素相等,那麼輸出也會如此。爲什麼你認爲相同的XMLOutputter會以不同的方式關閉沒有孩子的元素? –
假設元素1是這樣的 和元素2就是這樣 代碼會給我們正確的答案恐怕不是 –
confucius
@Nammari - 使用相同的'XMLOutputter'都應該確保相同元素的輸出相同。我不確定命名空間的效果如何,但我必須嘗試一下。 –
@Nammari:同樣的事Ben Ben說。元素包含數據並且不描述XML格式。 XMLOutputter允許您指定輸出的格式,因此只要使用相同的XMLOutputter,您的問題就無法解決。 –