Vergleichen Sie zwei xml und print der Unterschied ist die Verwendung von LINQ
Ich bin den Vergleich von zwei xml-und ich muss drucken Sie den Unterschied. Wie kann ich erreichen, das die Verwendung von LINQ.
Ich weiß, ich kann der Verwendung von XML-diff-patch von Microsoft, aber ich bevorzuge die Verwendung von LINQ . Wenn Sie irgendeine andere Idee, die ich umsetzen will, dass
//Erste Xml -
<Books>
<book>
<id="20504" image="C01" name="C# in Depth">
</book>
<book>
<id="20505" image="C02" name="ASP.NET">
</book>
<book>
<id="20506" image="C03" name="LINQ in Action ">
</book>
<book>
<id="20507" image="C04" name="Architecting Applications">
</book>
</Books>
//Zweite Xml -
<Books>
<book>
<id="20504" image="C011" name="C# in Depth">
</book>
<book>
<id="20505" image="C02" name="ASP.NET 2.0">
</book>
<book>
<id="20506" image="C03" name="LINQ in Action ">
</book>
<book>
<id="20508" image="C04" name="Architecting Applications">
</book>
</Books>
Ich will ein Vergleich dieser beiden xml und print Ergebnis wie dieser.
Issued Issue Type IssueInFirst IssueInSecond
1 image is different C01 C011
2 name is different ASP.NET ASP.NET 2.0
3 id is different 20507 20508
- Wie Komplex ist die xml? Wenn es nur root/record/@attrib ist es wohl machbar.
- (die xml ist ungültig, btw)
- Hi Marc, das hier ist ein sehr einfaches Beispiel in der aktuellen xml-seine wenig Komplex.
- ist der Unterschied nur in Werte und/oder Eigenschaften, oder kann die Struktur anders sein?
- Unterschied nur in der Attribute-Werte (siehe Frage) . Struktur nie ändern.
- Also immer dann, wenn mindestens ein Attribut hat, ist das gleiche in beiden Zeilen melden sollte beiden anderen Attribute wie anders?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die Lösung:
Beiden linq statements wahrscheinlich verbunden werden könnten, aber das überlasse ich als übung für Sie.
For fun, eine Allgemeine Lösung zu grega g ' s Lesen des Problems. Um zu veranschaulichen, mein Einwand gegen diesen Ansatz, habe ich eingeführt, eine "richtige" Eintrag für die "PowerShell in Action".
Welche Berichte die folgenden:
Beachten Sie, dass die letzten beiden Einträge sind der "Konflikt" zwischen den 20508 Tippfehler und anderes zu korrigieren 20508 Eintrag.
Die operation, die Sie wollen, ist hier eine Zip-pair up entsprechenden Elemente in den zwei Sequenzen von Büchern. Dieser Betreiber wird Hinzugefügt in .NET 4.0, aber wir können gefälschte es mit Select zu greifen, die Bücher' Indizes und fügen an, dass:
Werden wir dann verwenden Sie eine zweite Verknüpfung zum vergleichen der Werte der Attribute nach Namen. Beachten Sie, dass dies ist eine innere Verknüpfung; wenn Sie nicht wollen, um Attribute fehlen von einer oder der andere Sie zu tun haben müsste schon ein bisschen mehr Arbeit.
Das Ergebnis wird eine geschachtelte Kollektion:
Oder um mehrere Zeilen pro Buch:
Welche Berichte die folgenden: