Fehler beim Einlesen von XML mittels JDOM

benjero

Grünschnabel
Hallo zusammen,

ich kämpfe nun seit längerem mit folgendem Fehler:
Eine von mir erstellte XML-Datei kann mittels JDOM nicht eingelesen werde, da vom SAXBuilder die Exception "java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence" geworfen wird.

Beim Erstellen der Datei setze ich mittels das Encoding für den XML-Outputter auf "ISO-8859-1". Wobei es eigentlich egal ist, ob dies gesetzt wird oder nicht, da der Fehler in beiden Fällen beim Einlesen auftritt.

Weiß jemand vielleicht Abhilfe?

Danke und Gruß
Ben
 
Original geschrieben von benjero
Hallo zusammen,

ich kämpfe nun seit längerem mit folgendem Fehler:
Eine von mir erstellte XML-Datei kann mittels JDOM nicht eingelesen werde, da vom SAXBuilder die Exception "java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence" geworfen wird.

Beim Erstellen der Datei setze ich mittels das Encoding für den XML-Outputter auf "ISO-8859-1". Wobei es eigentlich egal ist, ob dies gesetzt wird oder nicht, da der Fehler in beiden Fällen beim Einlesen auftritt.

Weiß jemand vielleicht Abhilfe?

Danke und Gruß
Ben

Nimm nen anderen Editor zum erstellen der XML Datei.

Ich hatte mal das selbe Problem, und schuld war letztendlich ein dummer editor der mir multipart Dateien erstellt hatte.
 
Hallo!

Das wird schwierig, denn mein Programm erstellt ja die Datei... Ich möchte diese halt später wieder einlesen. Auch das erstellen läuft natürlich über JDOM.

Gruß
Ben
 
Original geschrieben von benjero
Hallo!

Das wird schwierig, denn mein Programm erstellt ja die Datei... Ich möchte diese halt später wieder einlesen. Auch das erstellen läuft natürlich über JDOM.

Gruß
Ben

Stimmt habe ich überlesen das du es mit dem XMLOutputter erstellst.

mhhh sollte eigentlich kein Problem darstellen.
Setz das Encodingt im XMLOutputter mal auf utf-8
 
Moin,

Setz das Encodingt im XMLOutputter mal auf utf-8

hab ich auch schon gemacht, ändert aber nichts. Liegt auch nicht am OS, was ich zwischenzeitlich mal gedacht hatte. Der Fehler tritt sowohl unter Linux als Windows auf. :(

Gruß
Ben
 
Ok, ich bin mir nicht ganz sicher, was Du "alles" sehen möchtest. Hoffe, folgendes wird reichen.

Zum Schreiben:
try {

FileOutputStream out = new FileOutputStream(datname);
XMLOutputter serializer = new XMLOutputter(" ", true);
serializer.setEncoding("ISO-8859-1");
serializer.output(this.getProjektInXml(projekt), out);
out.flush();
out.close();

}
catch (Exception e) {
return false;
}

return true;

}

und zum Lesen:
try {

SAXBuilder builder = new SAXBuilder(true);
InputSource is = new InputSource(datname);
Document doc = builder.build(is);

return this.getProjektFromXml(doc, datname, kennwort);

}
catch (Exception e) {
System.out.println(e.toString());
return null;
}
}
 
Mal ein wenig aufbereitet:
Code:
import java.io.FileOutputStream;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.xml.sax.InputSource;

public class Test {

    public static void main(String[] args) {

        String file = "c:\\home\\test.xml";
        try {
            Document doc = new Document();
            Element e = new Element("test");
            e.addContent("düdlüö");
            doc.setRootElement(e);

            FileOutputStream out = new FileOutputStream(file);
            XMLOutputter serializer = new XMLOutputter(" ", true);
            serializer.setEncoding("ISO-8859-1");
            serializer.output(doc, out);
            out.flush();
            out.close();
            
            SAXBuilder builder = new SAXBuilder(false);
            InputSource is = new InputSource(file);
            Document newDoc = builder.build(is);
            System.out.println("ging");

        } catch (Exception e) {
            e.printStackTrace();
        }
}

Funktioniert dieses Beispiel? Funktioniert bei mir nämlich wunderbar. (Auch mit anderen Encodings).

cybi
 
Tja ich hoffe du verstehst wieso wir dir dann nicht helfen können ;o) Die Ursache liegt irgendwo außerhalb der von dir geposteten Codefragmente.

Versuch einfach mal äste im XML wegzulassen bis du auf einem funktionierenden Level angekommen bist .. Auf die Tour müsstest du die Ursache innerhalb deiner XML finden können ..

cybi
 
Zurück