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
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ä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
G 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
W Sieht jemand was, was ich nicht sehe...? (Debugging) Java Basics - Anfänger-Themen 10
A Signierte Exe Datei funktioniert nicht mehr Java Basics - Anfänger-Themen 1
A Signierte Exe Datei funktioniert nicht mehr Java Basics - Anfänger-Themen 3
C my_table.setRowSelectionAllowed(true) funktioniert nicht; Java Basics - Anfänger-Themen 0
B Warum funktioniert die Lösung von CodeGym aber meine nicht? Java Basics - Anfänger-Themen 3
P Wo NUR (!) JRE v18 oder v21 herunterladen? Also nicht volles JDK Java Basics - Anfänger-Themen 1
J shuffle cards wird nicht ausgeführt. Java Basics - Anfänger-Themen 2
J JTextField -> CaretPos bei SelectionStart() setzten nicht bei SelectionEnd() Java Basics - Anfänger-Themen 20
W Java-PRogramm liest als EXE-File Nicht USB, jedoch aus NetBeans Java Basics - Anfänger-Themen 45
I Webservice funktioniert nicht Java Basics - Anfänger-Themen 5
C Abbruch einer Schleife mit break, meine Übung funktioniert nicht richtig Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben