# mit JDOM XML-Datei einlesen, die nicht "well-formed&quo



## mirko0 (15. Nov 2005)

Moin,

ich möchte eine XML-Datei einlesen, die nicht "well-formed" ist, es gibt Elementnamen, die mit einer Ziffer beginnen (nicht erlaubt). Da ich diese Datei aber nunmal einlesen muss, möchte ich darüber hinwegsehen.
Zum Einlesen der Datei benutze ich JDOM und einen SAXBuilder. Bei build() gibt es nun eine Exception (ist ja klar ...):


> Error on line 12 of document file:/C:/bla/file.xml: The content of elements must consist of well-formed character data or markup.


Ich habe jetzt ein bißchen im JDOM-Package rumgesucht und die Klasse Verifier.java gefunden. Da gibt es eine Methode checkXMLName(String name), wo an einer Stelle überprüft wird, ob das erste Zeichen eines Namens eine Ziffer ist. Diesen Teil habe ich auskommentiert, neu kompiliert und im jdom.jar-Package ersetzt.
Resultat: alles wie vorher  Weiß jemand, wie ich das Problem lösen kann?

Gruss,
Mirko


----------



## byte (15. Nov 2005)

Also erstmal: Wenn Deine Datei nicht well-formed ist, dann ist es keine XML-Datei. Du kannst das Problem doch einfach lösen, indem Du den Elementnamen, die mit einer Ziffer beginnen, vorne ein alphabetisches Zeichen einfügst. Dieses Zeichen kannst Du ja im weiteren Programmverlauf bei der Interpretation ignoriereren und nach dem Zurückschreiben am Ende wieder entfernen.


----------



## Bleiglanz (15. Nov 2005)

dein Problem kannst du nicht lösen

das ist eine der Grundlagen von XML: wenn das Ding nicht wohlgeformt ist dann ist es kein XML-Dokument, sondern irgendwas anderes

gute Parser werden die Bearbeitung IMMER mit einem Fehler abbrechen!


----------



## mirko0 (15. Nov 2005)

Ok, danke für die Atnworten. Um das nochmal klarzustellen, die Datei kommt von einem anderen Programm ... ich habe den Autor bereits informiert, dass die Datei nicht wel-formed ist, das sollte in der nächsten Version anscheinend eh geändert werden.
Ich werde es jetzt so machen, dass ich die Datei erst einlese und dann vor die falschen Elementnamen einen Buchstaben setze, am Ende tausch ich es dann wieder aus (die Datei(en) werden auch noch von besagtem anderen Programm genutzt.

Gruss,
Mirko


----------

