Zum Inhalt springen

Vergleichen von 2 XML Dateien


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe folgende Aufgabe bekommen:

Ich soll eine OpenSource Lösung finden bzw selbst etwas implementieren um folgendes zu lösen:

2 XML Dateien sollen miteinander verglichen werden und bei Unterschieden sollen diese Abrufbar sein (Zeilennummern o.Ä.)

Wenn in einem Child die gl Attribute auftauchen aber in untersch. Reihenfolge soll dies KEIN Unterschied sein ebenso wie

<Test /> und <Test></Test> KEINEN Unterschied ergeben soll.

Habt ihr vllt schonmal ähnliches gemacht bzw könnt ihr mir freie Lösungen nennen die dies können? Sonst muss ich mich wohl selbst an eine Implementierung machen

greetz skelle

Geschrieben

Ich habe sowas ähnliches mal gemacht, um HTML Templates mit JSPs zu vergleichen und Unterschiede bei einer Änderung der HTML Vorgabe zu entdecken. Das ist aber nicht so schwer. Du liest die beiden XML-Dokumente ein und erzeugst einen Baum. Jeder Knoten ist ein Tag, ein Knoten kann Attribute und Kinder haben. Jetzt musst Du nur noch schauen, wo die Knoten auseinandelaufen. Hier gibt es recht komplizierte Diff-Algorithmen für Bäume, allerdings war mir das zu kompliziert. Ich habe die Bäume in eine normalisierte Form gebracht (also zurück als Text mit Einrückungen und sortierten Attributen) und bin mit einem Textdiff über die Dateien gegangen. Damit habe ich recht einfach das gewünschte Ergebnis erhalten.

Fertig wäre mir kein Produkt bekannt, und meine Lösung ist nicht Open Source. :)

Peter

Geschrieben

Du kannst aber einen solchen Vergleich nur realisieren, wenn die Positionen der Knoten identisch ist.

z.B.


<testnode attributA="" attributB="" />

ist nicht gleich

<testnode attributB="" attributA="" />

syntaktisch zwar korrekt, evtl auch semantisch, aber nicht identisch.

Entweder müsste man die XML Dateien vorher mit einem Schema / DTD validieren und dann vergleichen, oder zu anderen Algorithmen greifen

Phil

Geschrieben

Also XML ist es egal, in welcher Reihenfolge die Attribute aufgeführt sind. <div id="x" class="y"></div> und <div class="y" id="x"></div> ist vom Inhalt her exakt das selbe. Deshalb muss man ja bei einem Vergleich auf meine Art die Attribute in eine einheitliche Form bringen, damit sie bei einem Textdiff korrekt verglichen werden.

Peter

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...