Hallo,
ich lese in Java mit Hilfe von JDOM ein XML-Dokument ein, verändere es und speichere es wieder ab. Dabei gibt es ein Problem mit den Sonderzeichen. In dem Original XML-Dokument verwende ich Entities, um die Zeichen abzubilden. Nachdem das Dokument später wieder abgespeichert wird, sind alle Sonderzeichen durch ein ? dargestellt.
Also habe ich eine Methode geschrieben, die vor der Ausgabe alle Sonderzeichen durch das entsprechende Entitie ersetzt.
Dabei gibt es allerdings auch Probleme. Wenn ich z.B. "ä" durch & auml; dann steht im XML-Dokument & amp;auml;
(natürlich ohne Leerzeichen, nur hier zur Darstellung...)
Die Methode output der Klasse XMLOutputter ersetzt anscheinend automatisch das & Zeichen durch & amp;
Wie kann ich das vermeiden?
Hängt das vielleicht mit dem Encoding zusammen?
Wichtig ist evtl. noch, dass das Java-Programm unter Linux läuft!!
Hier der Code:
Element rootElem = new Element("Document");
Document doc = new Document(rootElem);
....
// Elemente einfügen und Text durch Entity ersetzen
//
FileWriter out = new FileWriter(pfad);
out.write("<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?\n");
out.write("<!DOCTYPE Document [\n");
out.write("<!ENTITY auml '&auml;'>\n");
out.write("<!ENTITY ouml '&ouml;'>\n");
out.write("<!ENTITY uuml '&uuml;'>\n");
out.write("<!ENTITY Auml '&Auml;'>\n");
out.write("<!ENTITY Ouml '&Ouml;'>\n");
out.write("<!ENTITY Uuml '&Uuml;'>\n");
out.write("<!ENTITY szlig '&szlig;'>\n");
out.write("<!ENTITY amp '&'>\n");
out.write("<!ENTITY lt '&lt;'>\n");
out.write("<!ENTITY nbsp '&nbsp;'>\n");
out.write("<!ENTITY egrave '&egrave;'>\n");
out.write("<!ENTITY agrave '&agrave;'>\n");
out.write("<!ENTITY eacute '&eacute;'>\n");
out.write("<!ENTITY aacute '&aacute;'>\n");
out.write("<!ENTITY deg '&deg;'>\n");
out.write("<!ENTITY Ntilde '&Ntilde;'>\n");
out.write("<!ENTITY sup2 '&sup2;'>\n");
out.write("]>\n");
XMLOutputter xmlOut = new XMLOutputter();
xmlOut.setOmitDeclaration(true);
xmlOut.setOmitEncoding(true);
xmlOut.output(doc, out);
out.close();
Hoffe mir kann jemand helfen,
Danke,
Gruß Maike