# SAXParseException



## cyberbob (12. Nov 2004)

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 (12. Nov 2004)

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

zeig mal dein XML Dokument her


----------



## Guest (12. Nov 2004)

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 (12. Nov 2004)

> 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?


----------



## cyberbob (12. Nov 2004)

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>


----------



## Roar (12. Nov 2004)

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


----------



## cyberbob (12. Nov 2004)

Ich lese das Dokument so: 


```
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 (12. Nov 2004)

<!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?)


----------



## Bleiglanz (12. Nov 2004)

was ist f? ein file?

ruf mal f.exists() auf, und schau was los ist...

ist f vielleicht leer?


----------



## cyberbob (12. Nov 2004)

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


----------



## cyberbob (12. Nov 2004)

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


----------

