XML-Vergleich: Unterschiede zwischen zwei XML-Dateien

Fügen Sie zwei XML-Dokumente ein und sehen Sie pro Knoten neue, gelöschte oder geänderte Tags und Attribute.

Zwei XML-Dateien vergleichen: Knotenabgleich und Auswertung

Der Vergleich liest beide Dokumente mit dem XML-Parser des Browsers ein und vergleicht die Bäume Knoten für Knoten: Tag-Name, Attribute (unabhängig von ihrer Reihenfolge) und direkter Text jedes Elements. Elemente mit einem id-Attribut werden über diese Kennung zugeordnet, alle anderen über ihre Position. Jeder Knoten gilt danach als hinzugefügt, entfernt, geändert oder unverändert.

Wie das Tool Elemente zuordnet

Beide Texte müssen wohlgeformtes XML sein, sonst meldet das Tool einen Analysefehler und vergleicht nichts. Danach gilt für jedes Element:

  • Kindelemente mit einem id-Attribut werden über den Wert dieser id zugeordnet, auch wenn sich ihre Reihenfolge geändert hat;
  • Kindelemente ohne id werden nach Position zugeordnet (das 1. mit dem 1., das 2. mit dem 2.);
  • ein Element gilt als geändert, wenn ein Attribut hinzukommt, wegfällt oder sich ändert oder wenn sein direkter Text abweicht. Der Text wird getrimmt, Einrückungen und Zeilenumbrüche zählen also nicht.

Beispiel mit den Musterdateien

Version 1: Wurzel mit version = 1.0, ein settings-Block mit theme = dark, zwei user (id 1 Alice, id 2 Bob mit Rolle Admin). Version 2: version = 1.1, theme = light, ein zusätzliches notifications-Tag, Bob wird SuperAdmin und ein user mit id 3 (Charlie) kommt hinzu. Ergebnis: 3 geänderte Knoten (die Wurzel wegen ihres Attributs, theme, Bobs Rolle), 4 hinzugefügte (notifications, user 3 und seine zwei Kinder) und 3 entfernte (user 1 mit name und email). User 2 selbst bleibt unverändert, enthält aber eine Änderung.

Grenzen

  • Haben zwei Elemente an gleicher Position unterschiedliche Tag-Namen oder ids, wird das neue als geändert und alle seine Kinder als hinzugefügt markiert; die alten Kinder erscheinen nicht als entfernt.
  • Gelesen werden nur Textknoten: CDATA-Abschnitte, Kommentare und Verarbeitungsanweisungen werden nicht verglichen. Ein Namespace-Präfix gehört zum verglichenen Namen.
  • In einer Liste ohne ids verschiebt ein oben eingefügtes Element alle folgenden, die dann als geändert erscheinen. Die Code-Ansicht, ein zeilenweiser Diff im Monaco-Editor, hilft in diesem Fall.

Im Live-Modus läuft der Vergleich 0,8 Sekunden nach dem letzten Tastendruck erneut. Unveränderte Zweige werden eingeklappt, hochgeladene Dateien werden im Browser gelesen und nicht übertragen.

Häufig gestellte Fragen

Zählen Attributreihenfolge oder Einrückung als Unterschied?

Nein. Attribute werden nach Sortierung ihrer Namen als Menge verglichen, und der Text jedes Elements wird getrimmt, sodass Einrückungen und Zeilenumbrüche zwischen Tags keine Rolle spielen. Ändert sich dagegen ein Attributwert, auch nur um ein Zeichen, gilt das Element als geändert.

Wie vergleiche ich eine Liste, deren Reihenfolge sich geändert hat?

Geben Sie jedem Element ein Attribut mit dem Namen id: Das Tool ordnet die Elemente dann über diese Kennung zu, unabhängig von ihrer Position. Ohne id erfolgt die Zuordnung nach Position, und ein oben eingefügtes Element lässt alle folgenden als geändert erscheinen. Andere Attributnamen (key, ref, code) werden nicht ausgewertet.

Warum meldet das Tool einen XML-Analysefehler?

Mindestens eines der beiden Dokumente ist nicht wohlgeformt: ein nicht geschlossenes Tag, ein nicht maskiertes &-Zeichen, mehrere Wurzelelemente oder eine falsch platzierte Deklaration. Solange nicht beide Texte den Parser des Browsers passieren, startet kein Vergleich. Die Formatierungsschaltfläche hilft hier nicht, da sie die Syntax nicht korrigiert.

Werden CDATA-Abschnitte und Kommentare verglichen?

In der Baumansicht nicht: Sie liest nur die direkten Textknoten jedes Elements und seine Attribute. Eine Änderung, die nur einen Kommentar oder einen CDATA-Abschnitt betrifft, erscheint dort nicht. Die Code-Ansicht, die den Rohtext zeilenweise vergleicht, zeigt sie an.

Ist das Tool wirklich kostenlos?

Ja, alle Werkzeuge auf Kristools sind zu 100% kostenlos und ohne Registrierung zugänglich.

Sind meine Daten geschützt?

Ja. Die gesamte Verarbeitung erfolgt sicher und direkt in Ihrem Browser. Es werden keine persönlichen Daten an unsere Server gesendet.