skelle Geschrieben 24. April 2009 Geschrieben 24. April 2009 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 Zitieren
UltimateRuppi Geschrieben 24. April 2009 Geschrieben 24. April 2009 Ich bin dabei über XMLUnit gestolpert. Das kann das anscheinend. Ist auf den ersten Blick etwas kompliziert zu bedienen. Das gute ist das es als JUnit-Test eingebunden werden kann. Zitieren
kingofbrain Geschrieben 24. April 2009 Geschrieben 24. April 2009 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 Zitieren
flashpixx Geschrieben 24. April 2009 Geschrieben 24. April 2009 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 Zitieren
kingofbrain Geschrieben 26. April 2009 Geschrieben 26. April 2009 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 Zitieren
Empfohlene Beiträge
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.