Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[JDOM] XML-File einlesen

7 views
Skip to first unread message

Jens Körte

unread,
Apr 16, 2004, 4:55:16 AM4/16/04
to
Hallo

Ich bin Newbie bei XML (auch bei JDOM), von daher verstehe ich meine
Fehlermeldung nicht.

Ich gehe folgendermaßen vor:

<snip>

SAXBuilder builder = new SAXBuilder(true);
Document doc = null;
try
{
doc = builder.build(new FIleInputStream(new File("cuts.xml")));
}
catch (org.jdom.JDOMException ee) {ee.printStackTrace(); }
catch (java.io.IOException e) {e.printStackTrace(); }

<snap>

Ich erhalte folgende Fehlermeldung:
org.jdom.input.JDOMParseException: Error on line 1:
Dokumentwurzelelement fehlt
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:381)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:684)
at XML.parseXML(XML.java:33)
at XML$1.actionPerformed(XML.java:20)
...

Der Fehler tritt also genau in der Zeile mit dem doc =
builder.build... auf

meine XML-Datei sieht folgendermaßen aus:
<meta>
<info>
<style typ="cube">
<sx>200</sx>
<sy>100</sy>
<ex>300</ex>
<ey>400</ey>
</style>
<maininfo>Zelle</maininfo>
</info>
</meta>

Ich hatte erst Probleme damit, daß die Datei nicht UTF-8 konform ist.
Habe Sie dann aber mit UltraEdit32 in UTF-8 umgewandelt.

Wo liegt nun mein Problem? Schließlich habe ich doch ein
Dokumentwurzelelement.

Danke
Jens

Jens Körte

unread,
Apr 16, 2004, 5:01:16 AM4/16/04
to
Jens Körte <koe...@uni.de> schrieb:

Nachtrag...

Ich hatte wohl vor dem RootElement noch ein paar kryptische Zeichen
stehen. Die habe ich nun entfernt, erhalte aber eine weitere
Fehlermeldung mit der ich nichts anfangen kann

org.jdom.input.JDOMParseException: Error on line 1: Elementtyp "meta"
ist nicht deklariert.
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:381)
...

Grüße
Jens

Nico Seessle

unread,
Apr 16, 2004, 5:07:20 AM4/16/04
to
Jens Körte wrote:

> org.jdom.input.JDOMParseException: Error on line 1: Elementtyp "meta"
> ist nicht deklariert.
> at org.jdom.input.SAXBuilder.build(SAXBuilder.java:381)
> ...

builder.setValidation(false) könnte da evtl. helfen (keine Ahnung, was
bei JDOM der Default ist).

Oder Alternativ eben die Angabe eines DOCTYPE, damit der Parser an die
Deklaration kommt (sofern es überhaupt eine DTD für das Dokument gibt)

Nico

Heinz Grimm

unread,
Apr 16, 2004, 7:08:55 AM4/16/04
to
Jens Körte schrieb in der newsgroup de.comp.lang.java:
> Hallo

Hallo Jens,

>
> meine XML-Datei sieht folgendermaßen aus:
> <meta>
> <info>
> <style typ="cube">
> <sx>200</sx>
> <sy>100</sy>
> <ex>300</ex>
> <ey>400</ey>
> </style>
> <maininfo>Zelle</maininfo>
> </info>
> </meta>
>

Vielleicht funktioniert's, wenn du in der
ersten Zeile:
<?xml version="1.0" encoding="UTF-8"?>
einfügst.

Unter http://www-106.ibm.com/developerworks/java/library/j-jdom/
findest du ein kleines Tutorial, dass könnte
dir auch weiterhelfen.

Heinz
--
Immer auf dem aktuellen Stand mit den Newsgroups von freenet.de:
http://newsgroups.freenet.de


Jens Körte

unread,
Apr 16, 2004, 5:36:13 AM4/16/04
to
Heinz Grimm <heinz...@freenet.de> schrieb:

><?xml version="1.0" encoding="UTF-8"?>

Ich glaube, das es das war. Jetzt gehts.

>Unter http://www-106.ibm.com/developerworks/java/library/j-jdom/
>findest du ein kleines Tutorial, dass könnte
>dir auch weiterhelfen.

nee, leider nicht. Trotzdem Danke.

Mit welchem Editor (windoofs) kann ich denn UTF-8 Dokumente erstellen.
Ultraedit packt da irgendwie ab und zu ein paar kryptische Zeichen an
den Anfang ...

Grüße
Jens

Christian Fein

unread,
Apr 16, 2004, 6:25:59 AM4/16/04
to
Nico Seessle wrote:

Ist eigentlich nicht notwendig.
Das XML Document muss nur Wohlgeformt sein um es lesen zu können.

Dieses Problem sieht mir einfach danach aus das dein .xml Dokument wirklich
irgendwelche nicht sichtbaren Steuerzeichen enthält.

Nimm den billigsten Editor (einfachsten TextEditor) den du finden kannst
(auf win z.b Notepad) und überprüf das nochmal.

Falls es das nicht ist, würde ich nochmal haargenau die Tags auf eventuelle
vertipper prüfen :)

Norman Wehrle

unread,
Apr 16, 2004, 6:46:18 AM4/16/04
to
Jens Körte wrote:
> Ultraedit packt da irgendwie ab und zu ein paar kryptische Zeichen an
> den Anfang ...

Jo, das Teil nennt sich BOM.
Probier mal folgendes:
In der INI-Datei (C:\WINNT\UEDIT32.INI) folgenden Eintrag unter
[SETTINGS] machen:

Write UTF-8 BOM = 0
Write UTF-8 BOM NF = 0

Mit diesen Einstellungen wird bei UTF-8-Dateien das BOM nur geschrieben,
wenn es schon vorher drin stand.

Gruss,
Norman

Stefan Matthias Aust

unread,
Apr 16, 2004, 7:39:45 AM4/16/04
to
Christian Fein wrote:

> Nimm den billigsten Editor (einfachsten TextEditor) den du finden kannst
> (auf win z.b Notepad) und überprüf das nochmal.

Notepad unter Windows XP beachtet den BOM (darum handelt es sich
bestimmt) und zeigt ihn nicht an... das hatte ich gerade gestern als ich
verzweifelt nach einem Editor suchte, der diesen UTF-Präfix nicht
automatisch erkennt und beachtet. Der vim von Cygwin war in dieser
Beziehung auch zu schlau :(

bye
--
Stefan Matthias Aust // "Zweifel sind der Ansporn des Denkens..." -U

Christian Fein

unread,
Apr 16, 2004, 8:18:40 AM4/16/04
to
Stefan Matthias Aust wrote:
> Notepad unter Windows XP beachtet den BOM (darum handelt es sich
> bestimmt) und zeigt ihn nicht an... das hatte ich gerade gestern als ich
> verzweifelt nach einem Editor suchte, der diesen UTF-Präfix nicht
> automatisch erkennt und beachtet. Der vim von Cygwin war in dieser
> Beziehung auch zu schlau :(

Dann vielleicht DOS Kosole und editor (oder was es edit) eingeben.
Da erscheint der alte DOS Editor, der dürfte dann wohl hoffentlich wirklich
primitiv genug sein.

Oder wenn cygwin zur verfügung steht, über cat [dateiname]

Bodo Wippermann

unread,
Apr 16, 2004, 10:43:32 AM4/16/04
to
Hallo Jens,

Dein Probblem liegt sicherlich an der fehlenden DTD bzw. an dem
folgenden Statement:

SAXBuilder builder = new SAXBuilder(true);

Das "true" heißt, das der SAXBuilder validieren soll, sprich er prüft ob
dein XML-Dokument der ( bei dir nicht vorhandenen ) DTD ( oder auch
einem XML-Schema ) entspricht.

Setze den Parameter auf "false" oder lasse ihn ganze weg, dann geht's.

Gruß
Bodo

> ....
>
> Grüße
> Jens

0 new messages