Sonderzeichen bei XML Serialisierung nicht konvertieren

freggeln

Mitglied
Hallo,

mittels JAXBContext serialisiere ich Objekte nach XML. Hierbei habe ich das Problem, dass eine »<« in »&lt;« konvertiert wird.

Gibt es eine Möglichkeit dies zu verhindern und nach der Serialisierung wirklich die »<« in der XML Datei zu haben?

Danke & Gruß
 

freggeln

Mitglied
Du musst lediglich ein CDDATA einfügen .. dann sollte es klappen
CDATA - Wikipedia, the free encyclopedia
Beispiel:
[XML]<deinTag><![CDATA[ ich bin < als du ]]></deinTag>[/XML]

Gruß Jörg

Genau das habe ich gemacht und genau von diesem CDATA Teil wird eben »<« in »&lt;« beim Serialisieren gewandelt, obwohl die Datei sogar schon als UTF8 schreibe.

Gruß

EDIT:

Ich habe mal ein ein einfaches Beispiel für mein Problem erstellt.

Java:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.io.*;

public class DemoSeria {
	public static void main( String[] args ) throws Exception {
		MyObject vMyObject = new MyObject();
		JAXBContext ctx = JAXBContext.newInstance(MyObject.class);
        Marshaller m = ctx.createMarshaller();
        m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
		File vFile = new File("DemoSeria.xml");
		FileOutputStream vStream = new FileOutputStream( vFile );
		BufferedWriter vWriter = new BufferedWriter( WriterUTF8.getWriterUTF8( vStream ) );		
		m.marshal(vMyObject, vWriter);
        vWriter.flush();
		vWriter.close();
	}	
}

Java:
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
class MyObject {
		String MyString = "<![CDATA[ ich bin < als du ]]>";
		
		public String getMyString() {
			return this.MyString;
		}
		
		public void setMyString( String vString ) {
			this.MyString = vString;
		}
	}

Und als Datei kommt dann das folgende Ergebnis:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<myObject>
    <myString>&lt;![CDATA[ ich bin &lt; als du ]]&gt;</myString>
</myObject>
 
Zuletzt bearbeitet:

jwiesmann

Bekanntes Mitglied
Dann probiers mal damit... hatte an die andere Richtung gedacht :D
Java:
import com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.io.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

public class DemoSeria {

    public static void main(String[] args) throws Exception {
        Object vMyObject = new MyObject();
        Marshaller m =JAXBContext.newInstance( MyObject.class ).createMarshaller();
        m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        File vFile = new File("DemoSeria.xml");
        FileOutputStream vStream = new FileOutputStream(vFile);
        //BufferedWriter vWriter = new BufferedWriter(  vStream );
        m.setProperty("com.sun.xml.internal.bind.characterEscapeHandler", new CharacterEscapeHandler() {

            @Override
            public void escape(char[] ac, int i, int j, boolean flag, Writer writer) throws IOException {
                // do not escape
                writer.write(ac, i, j);
            }
        });
        m.marshal( vMyObject, new OutputStreamWriter( vStream ) );
        //m.marshal(vMyObject, vStream);
        //vWriter.flush();
        //vWriter.close();
    }

    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)
    static class MyObject {

        @XmlJavaTypeAdapter(value = Adapter.class)
        String MyString = "ich bin < als du";

        private static class Adapter extends XmlAdapter<String, String> {

            @Override
            public String marshal(String v) throws Exception {
                return "<![CDATA[" + v + "]]>";
            }

            @Override
            public String unmarshal(String v) throws Exception {
                return v;
            }
        }
    }
}

gruß Jörg
 

freggeln

Mitglied
Vielen Dank für die Antwort. Würde ich gerne probieren, aber ich kann ein Paket nicht einbinden.

Java:
import com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler;

Kannst Du mir sagen, wo ich das passende Paket bekomme? Aus einer Suche bei Google bin ich leider nicht wirklich schlau geworden.

Danke & Gruß
 

freggeln

Mitglied
was für eine Java Version nutzt du ? Ich hab nix eingebunden ..
JDK1.6...
Gruß

Also soweit ich weiß habe ich das auch. ???:L Gerade mal zur Sicherheit geprüft

Code:
javac -version
javac 1.6.0_22

java -version
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)

Sieht für mich auch stark nach JDK1.6 aus, oder?

Gruß
 

jwiesmann

Bekanntes Mitglied
Google sagt das wäre nen Bug, Sun sagt das wäre so gewollt .. wie dem auch sei, mit dem Zusatz
Code:
javac -XDignore.symbol.file=true
sollte es funktionieren..

Bug 6778491
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Sonderzeichen wie Euro (€) Java Basics - Anfänger-Themen 4
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
O Regex bei ReplaceAll ersetzt Wort und Sonderzeichen nicht. Java Basics - Anfänger-Themen 9
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
C Wie erkennt man Sonderzeichen im String? Java Basics - Anfänger-Themen 26
J ireport Designer / CSV / Sonderzeichen was läuft falsch Java Basics - Anfänger-Themen 7
W Methoden Konvertierung von Sonderzeichen Java Basics - Anfänger-Themen 2
S Sonderzeichen '|' (u007C) mit Scanner einlesen Java Basics - Anfänger-Themen 1
T byte[] zu String mit Sonderzeichen Java Basics - Anfänger-Themen 2
J Datentypen Cast von int zu char führ zu 'Sonderzeichen' Java Basics - Anfänger-Themen 2
B Char-Vergleich Sonderzeichen Java Basics - Anfänger-Themen 6
X String Sonderzeichen/Zahlen erkennen Java Basics - Anfänger-Themen 3
E String soll mit Großbuchstaben anfangen und keine Sonderzeichen enthalten Java Basics - Anfänger-Themen 4
M Sonderzeichen werden nicht erkannt Java Basics - Anfänger-Themen 3
A Datentypen Sonderzeichen / Strings ersetzen Java Basics - Anfänger-Themen 3
K Sonderzeichen auf der Windowskonsole ausgeben Java Basics - Anfänger-Themen 8
turmaline Ein regulärer Ausdruck für HTML-Sonderzeichen Java Basics - Anfänger-Themen 3
S String auf Sonderzeichen untersuchen Java Basics - Anfänger-Themen 6
V Sonderzeichen als eigene "Operatoren" im JTextField Java Basics - Anfänger-Themen 4
M Sonderzeichen beim usedelimiter Java Basics - Anfänger-Themen 4
Z Sonderzeichen in einem String gezeichnen/bearbeiten Java Basics - Anfänger-Themen 6
S Sonderzeichen "§" wird nicht erkannt - Stichwort Encoding! Java Basics - Anfänger-Themen 13
S Sonderzeichen in einem String erkennen Java Basics - Anfänger-Themen 20
Benji0815 Sonderzeichen Java Basics - Anfänger-Themen 8
M Sonderzeichen in einer Datei auslesen Java Basics - Anfänger-Themen 3
T JOption Pane: Sonderzeichen verbieten? Java Basics - Anfänger-Themen 14
G String und Sonderzeichen Java Basics - Anfänger-Themen 6
T Sonderzeichen in label Java Basics - Anfänger-Themen 4
B Exception bei ImageIO wegen sonderzeichen Java Basics - Anfänger-Themen 11
Semox Umwandlung von Sonderzeichen in HTML-Datei mit Ausgabe Java Basics - Anfänger-Themen 7
D Sonderzeichen ä,ü,ö werden als ? ausgegeben Java Basics - Anfänger-Themen 3
T Sonderzeichen Java Basics - Anfänger-Themen 2
G Sonderzeichen automatisch ändern lassen Java Basics - Anfänger-Themen 23
A XML-Datei erzeugen+Sonderzeichen erlauben Java Basics - Anfänger-Themen 10
L Sonderzeichen automatisch escapen. Java Basics - Anfänger-Themen 7
U Sonderzeichen die zweite Java Basics - Anfänger-Themen 16
H GPS über ser. Schnittst. liefert teilweise Sonderzeichen Java Basics - Anfänger-Themen 3
M RandomAccessFile schreibt Sonderzeichen vor String Java Basics - Anfänger-Themen 2
B String mit Sonderzeichen wie " oder = überprüfen Java Basics - Anfänger-Themen 2
H Datei mit Sonderzeichen Java Basics - Anfänger-Themen 8
G Newline Sonderzeichen aus File entfernen u als String speic? Java Basics - Anfänger-Themen 3
T Robot-Problem mit Sonderzeichen Java Basics - Anfänger-Themen 2
M java sonderzeichen filtern Java Basics - Anfänger-Themen 3
M Konvertierung v. Strings (evtl. mit Sonderzeichen) nach HTML Java Basics - Anfänger-Themen 8
M Char Array mit Sonderzeichen in String umwandeln Java Basics - Anfänger-Themen 21
S Umlaute und Sonderzeichen erkennen Java Basics - Anfänger-Themen 12
S HTML Sonderzeichen in Unicode wandeln Java Basics - Anfänger-Themen 5
C Sonderzeichen (ä, ö, ü) in JTextArea Java Basics - Anfänger-Themen 9
J Sonderzeichen Java Basics - Anfänger-Themen 2
D Problem mit der Serialisierung Java Basics - Anfänger-Themen 31
M Serialisierung in Java Java Basics - Anfänger-Themen 10
S Serialisierung: Laden von Objekten - Risiken? Java Basics - Anfänger-Themen 4
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
I Input/Output Alternative zur Serialisierung/ ImageJ Objecte Java Basics - Anfänger-Themen 7
W Nullpointer bei Objekt Serialisierung mit ArrayList<byte[]> etc. Java Basics - Anfänger-Themen 2
V Java Serialisierung Java Basics - Anfänger-Themen 2
O Objekt Listen serialisierung und deserialisieren Java Basics - Anfänger-Themen 5
U Serialisierung Probleme bei Umsetzung Java Basics - Anfänger-Themen 26
V Serialisierung Umbennung einer Klasse Java Basics - Anfänger-Themen 2
G Input/Output Serialisierung oder Datenbank Java Basics - Anfänger-Themen 6
K Input/Output Serialisierung Java Basics - Anfänger-Themen 7
P Serialisierung - Objekte vergleichen Java Basics - Anfänger-Themen 4
J Input/Output Serialisierung Java Basics - Anfänger-Themen 6
K Serialisierung: speichern und auslesen, auslesen klappt nicht Java Basics - Anfänger-Themen 14
B Std-Serialisierung - Speichern/Laden geht nur auf einem Rechner Java Basics - Anfänger-Themen 17
W Problem mit Serialisierung von jTable Java Basics - Anfänger-Themen 15
E Serialisierung - Exception? Java Basics - Anfänger-Themen 21
T Collections (De)-Serialisierung meines HashSets Java Basics - Anfänger-Themen 3
J Input/Output Serialisierung Java Basics - Anfänger-Themen 6
W Problem mit Serialisierung und TableModel Java Basics - Anfänger-Themen 3
O Serialisierung: Object abspeichern und aufrufen Java Basics - Anfänger-Themen 6
L Java Serialisierung Singleton Java Basics - Anfänger-Themen 6
Luk10 Serialisierung bei schon vorhandener Datei Java Basics - Anfänger-Themen 15
I Serialisierung ClassNotFound Java Basics - Anfänger-Themen 8
S serialisierung Java Basics - Anfänger-Themen 3
E Alternativen zur binären Serialisierung ? Java Basics - Anfänger-Themen 9
J Serialisierung - Array-Objekt serialisieren/deserialisieren Java Basics - Anfänger-Themen 6
G Frage zu Serialisierung Java Basics - Anfänger-Themen 4
M Serialisierung erstes Beispiel Java Basics - Anfänger-Themen 4
A Per Serialisierung speichern Java Basics - Anfänger-Themen 2
DStrohma Problem mit Serialisierung Java Basics - Anfänger-Themen 3
T Threads und Serialisierung Java Basics - Anfänger-Themen 4
Z Serialisierung vs. Sicherheit Java Basics - Anfänger-Themen 2
R Serialisierung von Objekten Java Basics - Anfänger-Themen 12
S Serialisierung Java Basics - Anfänger-Themen 8
G Objekt Serialisierung Java Basics - Anfänger-Themen 3
P Serializable - Serialisierung Java Basics - Anfänger-Themen 5
P Collection Vector speichern mittels Serialisierung? Java Basics - Anfänger-Themen 2
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29

Ähnliche Java Themen

Neue Themen


Oben