Vergleichen Sie zwei XML und drucken Sie die Differenz mit LINQ

8

Ich vergleiche zwei xml und muss den Unterschied drucken. Wie kann ich dies mit LINQ erreichen? Ich weiß, dass ich XML diff Patch von Microsoft verwenden kann, aber ich bevorzuge, LINQ zu verwenden. Wenn Sie eine andere Idee haben, werde ich das implementieren

// Erstes Xml

%Vor%

// Zweites Xml

%Vor%

Ich möchte diese beiden xml und das Druckergebnis wie folgt vergleichen.

%Vor%     
NETQuestion 24.09.2009, 06:12
quelle

3 Antworten

1

Hier ist die Lösung:

%Vor%

Beide linq-Anweisungen könnten wahrscheinlich zusammengeführt werden, aber ich überlasse das als Übung für Sie.

    
grega g 24.09.2009, 09:04
quelle
1

Der gewünschte Vorgang ist eine Zip-Funktion, um die entsprechenden Elemente in Ihren zwei Buchreihen zu paaren. Dieser Operator wird in .NET 4.0 hinzugefügt , aber wir können es fälschen, indem Sie Select verwenden, um die Indexe der Bücher zu erfassen und sich daran anzuschließen:

%Vor%

Wir werden dann einen zweiten Join verwenden, um die Werte der Attribute nach Namen zu vergleichen. Beachten Sie, dass dies ein innerer Join ist; Wenn Sie Attribute hinzufügen wollten, die in der einen oder der anderen fehlen, müssten Sie ein bisschen mehr Arbeit erledigen.

%Vor%

Das Ergebnis ist eine verschachtelte Sammlung:

%Vor%

Oder um mehrere Zeilen pro Buch zu erhalten:

%Vor%

Was berichtet Folgendes:

%Vor%     
dahlbyk 24.09.2009 13:46
quelle
1

Aus Spaß, eine allgemeine Lösung, um das Problem zu verstehen. Um meinen Einwand gegen diesen Ansatz zu veranschaulichen, habe ich einen "richtigen" Eintrag für "PowerShell in Action" eingeführt.

%Vor%

Was berichtet Folgendes:

%Vor%

Beachten Sie, dass die letzten zwei Einträge der "Konflikt" zwischen dem 20508-Tippfehler und dem ansonsten korrekten 20508-Eintrag sind.

    
dahlbyk 26.09.2009 15:13
quelle

Tags und Links