DTD Eintrag

Status
Nicht offen für weitere Antworten.

sirrurg

Mitglied
Hi,

habe mal eine Frage. Und zwar will ich eine XML Datei auslesen, deren "Präambel"
folgendes enthält

Code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">

Nun möchte ich diese XML Datei mit nem SAX Parser auslesen, dabei greif ich eben einfach auf die Factory, die in der Java Bib mitgeliefert wird zurück.
Schön und gut, funktioniert auch alles bestens.
Nun wollte ich mal fragen, ob es eine elegante Variante gibt mit einer Exception umzugehen, die das Fehlen der DTD betrifft.
Im Handler gibt es ja die Möglichkeit kritische Fehler zu behandeln.
Ist es denn möglich einfach dann zur Laufzeit dem Parser noch zu sagen,
ok im gleichen Verzeichnis ist zwar keine dtd aber hier hast du eine äquivalente, die
im Verzeichnis ... oder auch Archive liegt!

MfG
 

sirrurg

Mitglied
Nun gut.

Habe mich mal im Forum genauer umgesehn.
Leider sieht es so aus, als ob es keine elegante Methode gibt um das zu Behandeln.
Habe mich nun dazu entschieden, einfach die Exception abzufangen, zu prüfen ob es sich dabei
um diese Datei handelt und diese dann in das entsprechende Verzeichnis zu kopieren.
Nicht unbedingt das schönste, aber es funktioniert.

MfG
 

Bleiglanz

Gesperrter Benutzer
sirrurg hat gesagt.:
Nun gut.
Leider sieht es so aus, als ob es keine elegante Methode gibt um das zu Behandeln.
die Frage ist WAS behandeln?

wenn ein XML Dokument keine DTD einbindet, ist es meistens eine schlechte Idee, eine solche erzwingen zu wollen...

ich schreib in diesem Fall lieber einen hinreichend "robusten" SAX-Handler und verzichte ganz auf das validieren...

<!DOCTYPE log SYSTEM "logger.dtd"> deutet ja darauf hin, dass der Inhalt so komplex nicht sein dürfte :)
 

sirrurg

Mitglied
Ja, so komplex ist die nun auch nicht. Aber ich verwende eben die Standard Logging API mit dem Standard XMLFormatter und der schreibt das eben als Präambel. Da ich nicht daran denke, deswegen nen Formatter "neu-zu-klaun" mit einer Zeile weniger, werde ich wohl damit auskommen müssen. :?

Aber danke für die Tips, vielleicht finden die ja beim nächsten Mal, dann ne sinnvolle Verwendung 8)
 

Bleiglanz

Gesperrter Benutzer
mach einfach setValidating(false), dann ignoriert der Parser den ganzen DTD Schamott

man ist ja nicht gezwungen, den DOCTYPE zu beachten
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben