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?
18
A
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
2
provare il Microsoft XML Diff e l'utilità di patch here o Google "XML Diff"
4
seguito di "Adam Ruth" Ho letto attraverso il collegamento Microsoft e questo post del blog è molto utile ..
Eric White: http://blogs.msdn.com/b/ericwhite/archive/2009/01/28/equality-semantics-of-linq-to-xml-trees.aspx
1 DeepEquals funziona a meraviglia - grazie – adrianos
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