2009-05-17 4 views
18

Unit test il mio codice di serializzazione Ho trovato uno fallito perché avevo attributi elencati in un ordine diverso (sto solo confrontando i valori di XDocument.ToString()) e mentre potevo sistemarlo, non mi importa quale ordine gli elementi o gli attributi appaiono finché sono tutti lì con il nome giusto al giusto livello di gerarchia. Probabilmente potrei scrivere un metodo per farlo, ma mi chiedo se ci sia un modo facile e integrato di cui non sono a conoscenza.C'è un modo semplice per confrontare se 2 XDocuments sono uguali a ignorare elemento/ordine attributo?

risposta

11

XNode ha una funzione DeepEquals che dovrebbe fare il trucco.

http://msdn.microsoft.com/en-us/library/system.xml.linq.xnode.deepequals.aspx

Aggiornamento:

sembra che la funzione DeepEquals non sempre funziona correttamente. Potrebbe essere meglio implementare la propria routine di confronto.

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=400469

+0

1 DeepEquals funziona a meraviglia - grazie – adrianos

+0

DeepEquals funziona come fascino per me. Grazie. Ho letto il post menzionato da Aim Kai e fortunatamente quegli scenari non erano applicabili nel mio caso. – publicgk

2

provare il Microsoft XML Diff e l'utilità di patch here o Google "XML Diff"