SAXParseException

Status
Nicht offen für weitere Antworten.
C

cyberbob

Gast
Hallo, ich habe eine Klasse geschrieben, die ein xml-Dokument lesen soll, und da bekomme ich (eben funktionierte es noch) nun folgende Fehlermeldung:

org.jdom.input.JDOMParseException: Error on line 1 of document file:/d:/development/java/buch/Sprüche.xml: Dokumentwurzelelement fehlt
Datenbankfehler: Datenbankfehler!

Der StackTrace ergab folgendes:

org.jdom.input.JDOMParseException: Error on line 1 of document file:/d:/development/java/buch/Sprüche.xml: Dokumentwurzelelement fehlt
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:465)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:810)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:789)
at Wähler.<init>(Wähler.java:59)
at Wähler.main(Wähler.java:27)
Caused by: org.xml.sax.SAXParseException: Dokumentwurzelelement fehlt
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3364)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:668)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
... 4 more
Caused by: org.xml.sax.SAXParseException: Dokumentwurzelelement fehlt
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3364)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:668)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:810)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:789)
at Wähler.<init>(Wähler.java:59)
at Wähler.main(Wähler.java:27)
Caused by: org.xml.sax.SAXParseException: Dokumentwurzelelement fehlt
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3364)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:668)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:810)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:789)
at Wähler.<init>(Wähler.java:59)
at Wähler.main(Wähler.java:27)

Kann mir jemand von euch sagen, was das sein könnte?
 

Bleiglanz

Gesperrter Benutzer
Caused by: org.xml.sax.SAXParseException: Dokumentwurzelelement fehlt

zeig mal dein XML Dokument her :)
 
G

Guest

Gast
cyberbob hat gesagt.:
Dokumentwurzelelement fehlt
rat mal was das heißen könnte :bahnhof:

und ohne xml datei kann ich nicht mehr sagebn als die fehlermeldung bereits gesagt hat.

hmm zu spät
achja, der post is von mir (Roar)
 

Bleiglanz

Gesperrter Benutzer
Datenbankfehler: Datenbankfehler!
liest du das xml-Dokument aus einer Datenbank? -

Wahrscheinlich kommt gar nichts zurück, also ist das Dokument leer und hat kein einziges Element?

Welches Genie hat denn die catch-Klausel beim Zugriff auf die Datenbank geschrieben?
 
C

cyberbob

Gast
Habe es schon mit und ohne dtd-Definitionen probiert...

<?xml version="1.0" encoding="UTF-8" ?>
<spruchliste>
<spruch>
<rating>3.5</rating>
<autor>Martin Döbrich</autor>
<aussage>Im Namen des Sinus, des Cosinus und des heiligen Tangenz!</aussage>
</spruch>
</spruchliste>
 
R

Roar

Gast
hmm encoding UTF-8 aber umlaute drin? :-/
und mach mal nen doctype rein: <!DOCTYPE spruchliste>
 
C

cyberbob

Gast
Ich lese das Dokument so:

Code:
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build( f );
Element sprüche = doc.getRootElement();
List liste = sprüche.getChildren( "spruch" );

Der bricht schon bei doc = builder.build(f) ab.

@Roar: habe nun keine umlaute mehr drin, geht immer noch nicht. doctype habe ich auch gesetzt
 

Bleiglanz

Gesperrter Benutzer
<!DOCTYPE spruchliste>

quatsch, wenn schon dann eine volle DTD mit allen Elementen, nur das Wurzelelment funktioniert nie

kann so keinen Fehler entdecken, würde dir aber trotzdem einen aktuellen xerces als parser empfehlen (crimson?)
 
C

cyberbob

Gast
ich habe jetzt eine volle DTD f.exists() liefert true und die Datei ist bestimmt nicht leer!
 
C

cyberbob

Gast
Es geht nun, ich habe folgende Zeilen in die DTD eingefügt:

<!ELEMENT root ANY>
<!ATTLIST root version CDATA #REQUIRED>

danke für eure Antworten
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben