Ich habe einen Codec geschrieben, der mir die Daten eines XML Files in ein binäres File schreibt. Ebenso ist es möglich, binäre Dateien mittels dieses Codecs in ein XML File umzuwandeln.
Um das zu testen, möchte ich Input und Output vergleichen, d.h.
in.XML -\>Codec-\> .bin -\>Codec-\> out.XML
-
Gibt es einen automatischen Weg, in.XML und out.XML zu vergleichen ob die denselben Inhalt haben?
-
Gibt es eine Möglichkeit, out.XML gegen ein .xsd zu prüfen.
-
Kennt jemand einen Weg, um „pretty print“ auf out.XML auszuüben? (Ich schreibe out.XML mit dem XmlSerializer von xmlpullparser.org.)
Moin
- Gibt es einen automatischen Weg, in.XML und out.XML zu
vergleichen ob die denselben Inhalt haben?
Vollautomatisch geht nicht. Aber du kannst das ganze durch javax.xml.parses jagen und das Resultat vergleichen. Mit SAX geht das (wenn sich die Reihenfolgen nicht ändert haben) sehr schnell.
- Gibt es eine Möglichkeit, out.XML gegen ein .xsd zu
prüfen.
Du kannst dir von DocumentBuilderFactory einen „Validating“-Parser erzeugen lassen. Der schmeisst dann beim laden des XML eine Exception wenn was nicht passt. Allerdings ist das testverhalten von dem Ding für mich nicht nachvollziehbar.
- Kennt jemand einen Weg, um „pretty print“ auf out.XML
auszuüben? (Ich schreibe out.XML mit dem XmlSerializer von
xmlpullparser.org.)
Durchsuch den Quellcode von „java.beans.XMLEncoder“, da ist einer verbaut (den man auch ausserhalb von beans nutzen kann).
cu
Moin
- Gibt es einen automatischen Weg, in.XML und out.XML zu
vergleichen ob die denselben Inhalt haben?
Vollautomatisch geht nicht. Aber du kannst das ganze durch
javax.xml.parses jagen und das Resultat vergleichen. Mit SAX
geht das (wenn sich die Reihenfolgen nicht ändert haben) sehr
schnell.
Habe das mit einem SAX parser gemacht.
- Gibt es eine Möglichkeit, out.XML gegen ein .xsd zu
prüfen.
Du kannst dir von DocumentBuilderFactory einen
„Validating“-Parser erzeugen lassen. Der schmeisst dann beim
laden des XML eine Exception wenn was nicht passt. Allerdings
ist das testverhalten von dem Ding für mich nicht
nachvollziehbar.
Das Problem ist, dass das XML file kein Verweis zu einem XSD file enthält. Ich muss also das geladene XML file gegen ein externes XSD prüfen.
Ich bin gerade daran, das mit Xerces zu prüfen, komme aber nicht auf einen grünen Zweig…
- Kennt jemand einen Weg, um „pretty print“ auf out.XML
auszuüben? (Ich schreibe out.XML mit dem XmlSerializer von
xmlpullparser.org.)
Durchsuch den Quellcode von „java.beans.XMLEncoder“, da ist
einer verbaut (den man auch ausserhalb von beans nutzen kann).
ok, scheint simpel zu sein 
Moin
Das Problem ist, dass das XML file kein Verweis zu einem XSD
file enthält. Ich muss also das geladene XML file gegen ein
externes XSD prüfen.
Das ist eine Scheisssituation. Man kann da aber ein bisschen was hacken: Lad die ersten XY Byte der Datei als String. Schneid nach dem XML-Header ab und füg den XSD/DTD/…-Link ein.
Öffene die Datei nochmal. Lies bis zum Ende des Header (meistens das erste „>“). Benutz dann einen SequenceInputStream um den String (StringBufferInputStream) vor den Rest der Datei zu setzen. Den SequenceInputStream als normalen Stream in SAX stopfen…
Wie gesagt: ein Hack, keine saubere Lösung.
cu