Schritt für Schritt
- Genau zwei UTF-8-XML-Dateien bis jeweils 1 MB auswählen. Dateinamen kontrollieren und alt sowie neu zuweisen.
- Festlegen, ob reine Leerraum-Textknoten verglichen werden. Standardmäßig bleiben alle Texte erhalten; xml:space="preserve" gilt auch beim Ignorieren von Leerraum.
- 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.
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.