No. XmlDocument non sostituisce il comportamento del metodo Equals()
così, è infatti proprio svolgimento parità riferimento - che sarà sicuro nel tuo esempio, a meno che i documenti siano effettivamente la stessa istanza di oggetto.
Se si desidera confrontare i contenuti (attributi, elementi, commmenti, PI, ecc.) Di un documento, è necessario implementare tale logica da soli.Attenzione: non è banale.
A seconda del tuo scenario esatto, potresti essere in grado di rimuovere tutti gli spazi non essenziali dal documento (che a sua volta può essere difficile) e confrontare il testo xml risultante. Questo non è perfetto: fallisce per documenti semanticamente identici, ma differiscono in cose come il modo in cui gli spazi dei nomi sono usati e dichiarati, o se certi valori sono sfuggiti o meno, l'ordine degli elementi e così via. Come ho detto prima, il confronto XML non è banale.
È inoltre necessario definire chiaramente cosa significa per due documenti XML essere "identici". L'ordine degli elementi o degli attributi è importante? Il caso (nei nodi di testo) è importante? Dovresti ignorare le sezioni CDATA superflue? Contare le istruzioni di elaborazione? Che dire di spazi qualificati completi e parzialmente qualificati?
In qualsiasi implementazione di scopo generale, è probabile che si desideri trasformare entrambi i documenti in una forma canonica (sia XML che in qualche altra rappresentazione) e quindi confrontare il contenuto canonizzato.
Esistono già strumenti che eseguono il differenziamento XML, come Microsoft XML Diff/Patch,, che è possibile sfruttare per identificare le differenze tra due documenti. Per quanto ne so, lo strumento non è distribuito in forma sorgente ... quindi per utilizzarlo in un'applicazione incorporata è necessario eseguire lo script del processo (se si prevede di utilizzarlo, è necessario innanzitutto verificare che i termini di licenza consentano l'uso e la ridistribuzione).
EDIT:Partenza @Max Toro's answer se si sta utilizzando .NET 3.5 SP1, come a quanto pare c'è un'opzione in XLinq che può essere utile. Bello sapere che esiste.
Non lo sapevo, grazie. –
Molto bello. Non sapevo che esistesse. Sembra che gestisca molti dei casi che descrivo. – LBushkin
Bello - questo significa che non ho bisogno di importare una libreria di terze parti per fare questo per me! –