Castor verursacht MarshallingException bei XML Dokumenten mit Steuerzeichen

esenay

Mitglied
Hallo *,
ich habe folgendes Problem. Mit Hilfe von Castor habe ich mir über ein Schema Klassen generieren lassen. Diese Klassen nutze ich um die Struktur eines XML Dokumentes zu erstellen und zum Schluss das XML Dokument zu erzeugen.
Enhalten die Daten (nicht die Tags!) allerdings Sonderzeichen wie z.B. 'SOH' bekomme ich eine MarshallingException.

Ich benutze XML Version 1.0, welches Unicode 2.0 unterstützt. XML Version 1.1 würde Unicode 4.0 unterstützen, was mein Problem lösen würde, denn hier sind die Zeichen von 0x1 bis 0x1F zugelassen.

Weiß einer von euch vielleicht, wie ich beim marshalln die Version setzen kann?

Vielen Dank schon mal für eure Hilfe.
 
hi,

das ist ein Auszug aus der Logdatei:

Code:
Caused by: java.io.IOException: The character '' is an invalid XML character
	at org.apache.xml.serialize.BaseMarkupSerializer.characters(Unknown Source)
	at org.exolab.castor.xml.util.DocumentHandlerAdapter.characters(DocumentHandlerAdapter.java:93)
	at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1617)
	... 68 more
 --> The character '' is an invalid XML character
	at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1620)
	at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1830)
	at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1824)
	at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1824)
	at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1830)
	at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1830)
	at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:821)

der betroffene charackter ist wie bereits beschrieben das 'SOH'
 
Müssen die Steuerzeichen in der XML-Datei unbedingt vorhanden sein?
XML ist eigentlich nicht für Steuerzeichen oder sowas gedacht.

MFG

Sascha
 
das weiß ich leider auch. Allerdings kann ich das nicht beeinflussen, dass die Texte Steuerzeichen enthalten.
Also brauch immer noch eine Lösung...
 
Da XML nur für sowas gedacht ist, wird es sehr wahrscheinlich nicht funktionieren.

MFG

Sascha
 
wie bereits oben erwähnt: xml ab version 1.1 erlaubt steuerzeichen als entities. Ich will ja auch nur wissen, ob man die version über den marshaller des castor frameworks setzen kann.
 
Achso. Das ist natürlich ne andere Frage. Da ich das aber noch nicht gemacht hab, kann ich dir das nicht sagen.

Ich hab den Thread mal ins Java-Forum verschoben, da kann man dir dann eher helfen.

MFG

Sascha
 
Hier ist die Lösung für alle:

Code:
		StringWriter writer = null;
		writer = new StringWriter();
		XML11Serializer ser= new XML11Serializer();
		ser.asDocumentHandler();
		Marshaller m = new Marshaller(ser.asDocumentHandler());
		m.setWriter(writer);
 
Zurück