XML mit externer DTD validieren

Status
Nicht offen für weitere Antworten.

HannesBacke

Mitglied
Hi,
ich habe einen Java Parser der mir meine XML-Datei validiert.
Innerhalb dieser Datei wird die DTD angegeben:
Code:
<!DOCTYPE Knoten SYSTEM "xyz.dtd">

Nun möchte ich allerdings selber eine DTD im JAVA-Code angeben
können, die zur Validierung genutzt wird. Es kommt nämlich vor,
dass innerhalb der XML-Datei nicht auf eine DTD verwiesen wird.

Meine Frage also:
wir kann ich eine DTD zur Validierung einer XML-Datei laden?

Mein Code:
Code:
SAXBuilder saxBuilder = new SAXBuilder("org.apache.xerces.parsers.SAXParser",true);
Document doc = saxBuilder.build(new File(filename));
saxBuilder.setValidation(true);
 

foobar

Top Contributor
Es kommt nämlich vor,
dass innerhalb der XML-Datei nicht auf eine DTD verwiesen wird.
Um sicher zu gehen daß es sich bei einen Datei um valides XML handelt, muß die DTD innerhalb der Instanz angegeben werden.
Anders macht es auch gar keinen Sinn.
 

Bleiglanz

Gesperrter Benutzer
Antwort: hängt vom verwendeten Parser ab

suche im Forum

war erst letzte Woche dran, schau doch einfach mal in den Bereich XML & Co, da steht

XML mit externer DTD validieren
XML Datei nach bestimmter Grammatik erstellen
Knoten nach Inhalt auswählen
servlet deklaration in web.xml
Elemente aus XML-File löschen (JDom)
[JDOM] XML File, neue Daten hinzufügen
Java Code in XML
XML Dokument mit DTD validieren // <!-- WAS IST DENN DAS?
 

HannesBacke

Mitglied
Bleiglanz hat gesagt.:
Antwort: hängt vom verwendeten Parser ab

...

XML Dokument mit DTD validieren // <!-- WAS IST DENN DAS?

Die Suche habe ich natürlich vorher benutzt, allerdings steht in dem Beitrag
nur drin wie man eine DTD innherhalb der XML einbindet, ich habe aber
das Problem, dass ich keinen Einfluss auf die XML-Datei habe.
Ich bekomme sie zugeschickt und moechte sie gerne mit meiner DTD
validieren. Also muss ich im Java angeben welche DTD er für meine
XML nehmen soll.
Aber wie?
 

Bleiglanz

Gesperrter Benutzer
erzeug dir einfach eine neue temporäre Datei, die du per Stringmanipulation mit dem entsprechenden

<!DOCTYPE Knoten SYSTEM "xyz.dtd">

aufpeppst, das ist am einfachsten :)
 

HannesBacke

Mitglied
Bleiglanz hat gesagt.:
erzeug dir einfach eine neue temporäre Datei, die du per Stringmanipulation mit dem entsprechenden

<!DOCTYPE Knoten SYSTEM "xyz.dtd">

aufpeppst, das ist am einfachsten :)

Das wird wahrscheinlich das einfachste sein. Ist schon komisch, dass es keine
Möglichkeit gibt die DTD extra anzugeben.
Naja, was solls.
 

Bleiglanz

Gesperrter Benutzer
es geht irgendwie (z.B. mit XMLFilter die nötigen SAX events hineinflicken) oder über spezielle Eigenschaften des Parsers; scheint mir alles viel zu frickelig
 

HannesBacke

Mitglied
Bleiglanz hat gesagt.:
es geht irgendwie (z.B. mit XMLFilter die nötigen SAX events hineinflicken) oder über spezielle Eigenschaften des Parsers; scheint mir alles viel zu frickelig

Also wenn noch irgendjemand einen wirklich nützlichen Tipp hat, wäre ich sehr dankbar, ansonsten muss ich halt in die XML-Datei den Pfad zur DTD schreiben.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben