XML-Struktur vergleichen

XML vergleichen und Unterschiede in der gelesenen Struktur prüfen. Alte und neue Datei werden ausdrücklich zugewiesen. Namen, Attribute, Text und Kindreihenfolge erscheinen als Vergleichseinträge mit lokalem JSON-Bericht.

Verarbeitung auf Ihrem Gerät. Kein Datei-Upload.
Datei auswählen und loslegen

Hierher ziehen oder Dateiauswahl verwenden.

Schritt für Schritt

  1. Genau zwei UTF-8-XML-Dateien bis jeweils 1 MB auswählen. Dateinamen kontrollieren und alt sowie neu zuweisen.
  2. Festlegen, ob reine Leerraum-Textknoten verglichen werden. Standardmäßig bleiben alle Texte erhalten; xml:space="preserve" gilt auch beim Ignorieren von Leerraum.
  3. Vergleich starten, Zähler und Vorschau prüfen und JSON speichern. Fehlerhafte oder nicht unterstützte Eingaben vorher korrigieren.

Das Beispiel prüfen

Die fiktive Rechnungsdemo behält DEMO-001 als Nummer und EUR als Währung. Der Betrag ändert sich von 10.00 auf 12.50. Zusätzlich verwendet das neue Dokument ein anderes Präfix für dieselbe Namensraum-URI. Der Bericht zeigt genau einen geänderten Texteintrag mit before="10.00" und after="12.50". Die Präfixänderung allein erzeugt keinen Unterschied. Geprüft werden XML-Werte, weder eine Zahlung noch die Gültigkeit einer Rechnung.

Zwei fiktive Rechnungs-XML unterscheiden sich nach Auflösung der Namensraumpräfixe nur im Betragstext 10.00 gegenüber 12.50 und liefern einen geänderten Eintrag.
Echte Vorgaben und Ergebnisse der Schaltfläche „Beispiel ausprobieren“.

Methode und Datenstruktur

Der namensraumbewusste saxes-Parser liest beide Bäume in einem Worker. Namensraum-URI und lokaler Name bestimmen die Identität von Element- und Attributnamen; die verlinkte W3C-Spezifikation erklärt dieses Modell. Attributreihenfolge und ungenutzte Namensraumdeklarationen werden ignoriert. Text, Attributwerte, Namen und Kindreihenfolge erhalten Einträge an Pfaden aus Namen und Geschwisterpositionen. Schrägstriche und Tilden in Pfadnamen werden maskiert. CDATA und gewöhnliche Zeichendaten werden als Text zusammengeführt. Hinzugefügte, entfernte und geänderte Einträge werden getrennt gezählt. Ein neues Element kann deshalb mehrere Struktureinträge betreffen.

Quelle: W3C: Namespaces in XML 1.0

Unterstützung und Grenzen

Je Datei gelten 1 MB, 20.000 gezählte Knoten oder Attribute und Tiefe 64. Lange Namen und erzeugte Pfade sind begrenzt: URI 512 Zeichen, lokaler Name 256, Einzelpfad 4096 und Pfadsumme 4 MB. Nach 20 Sekunden endet die Verarbeitung. Die Vorschau zeigt 100 Unterschiede, JSON höchstens 1000. Werte werden bei 2000 Zeichen gekürzt; Kennzeichen melden Kürzungen. Geschwisterpositionen bestimmen den Abgleich. IDs und Verschiebungen werden nicht erkannt. Kommentare, Verarbeitungsanweisungen und XML-Deklarationen bleiben unberücksichtigt. Attribut- und Textwerte werden wörtlich verglichen, auch wenn ein Wert einen präfixierten Namen enthält. DTD und externe Entitäten werden abgewiesen. XSD, Signaturen, SEPA-Regeln oder XRechnung-Konformität werden nicht validiert.

Daten bleiben auf Ihrem Gerät

Beide Quelldateien bleiben auf Ihrem Gerät. Programmdateien kommen von dieser Website. Namensraumbezeichner und Dokumentinhalte lösen keine fremden XML- oder Schemaabrufe aus. Die Netzwerkliste beim Demovergleich zeigt, dass kein Quellcode-Upload stattfindet. Abbrechen beendet den Worker. Zurücksetzen leert Auswahl und aktuellen Bericht. Gespeicherte JSON-Dateien bleiben erhalten und können Dateinamen sowie Ausschnitte beider Eingaben enthalten.

Häufige Fragen

Sind Dateien ohne gemeldeten Unterschied bytegleich?

Nein. Präfixe, Attributreihenfolge und ignorierte Inhalte dürfen sich trotz gleicher Vergleichseinträge unterscheiden.

Soll ich reine Leerraum-Textknoten ignorieren?

Bewusst entscheiden: In gemischtem Inhalt kann Leerraum wichtig sein. Standardmäßig wird er verglichen; xml:space="preserve" verhindert seine Entfernung.

Zählt ein neues Element immer als eine Änderung?

Nein. Gezählt werden Struktureinträge einschließlich Namen und Kindreihenfolge, keine Geschäftsvorgänge.