2011-11-02 71 views

回答

2

我可以引述亞倫帕特森:

至於XML文檔而言,任何兩個節點是永遠相等。 文檔中的每個節點都不相同。每個節點都有很多屬性 可供比較:

  1. 名稱是否相同?
  2. 屬性如何?
  3. 命名空間如何?
  4. 孩子數量呢?
  5. 所有的孩子都一樣嗎?
  6. 它的父節點是否一樣?
  7. 它相對於兄弟節點的位置呢?

考慮將兩個節點添加到同一文檔。它們可以是從不 相對於兄弟節點具有相同的位置,因此文檔中的兩個節點 不能「相等」。

可以然而比較兩個不同的文件。但你需要 自己回答這7個問題,因爲你在走兩棵樹。 您對相同性的要求可能與其他人不同。

我不會反對在做這個 比較的Node上實現a =〜,但對這些問題非常嚴格。

你可以做的東西一樣:

DOC1 =〜DOC2#=>真
DOC2 =〜doc3的#=>假

只要它纔會返回true或false。聽上去怎麼樣?

- 阿倫帕特森http://tenderlovemaking.com/


否則,there are lookarounds

負載的XML文檔與Hash#from_xml哈希和比較哈希值。

+0

謝謝您的回覆。此解決方案中的問題是,我需要確定兩個xml文檔之間有什麼區別 –

+0

散列比較是否不起作用? – apneadiving

+0

是的,它可以工作,但我只能確定這兩個文件是否不相同。當我嘗試使用Hash.diff可視化差異時,儘管只有葉節點中的一個屬性發生了更改,但它返回了大部分XML文檔 –