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
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();
}
}
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;
}
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<myObject>
<myString><![CDATA[ ich bin < als du ]]></myString>
</myObject>
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;
}
}
}
}
import com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler;
was für eine Java Version nutzt du ? Ich hab nix eingebunden ..
JDK1.6...
Gruß
javac -version
javac 1.6.0_22
java -version
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
javac -XDignore.symbol.file=true