c300: / JAVA, Einbinden der DTD

Nabend

Ich versuche innerhab eines Servlets eine XML-Datei zu parsen. Dies scheitert jeweils, da der Parser eine FileNotFoundException wirft.

Meine DTD liegt im selben Verzeichnis wie die XML-Datei ansich. Kann mir jemand sagen, was ich falsch mache?

Relevantes XML:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE katalog SYSTEM "file:///katalog.dtd">

Danke und Gruss

  1. Hallo,

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE katalog SYSTEM "file:///katalog.dtd">

    .............................^^^^^^^^

    Mach das "file:///" weg, dann sollte es tun.

    Gruß
    Slyh

    1. Hallo Slyh

      Das hatte ich schon versucht, dann gibts ne MalFormedURLException. Ich habs jetzt anders gelöst und verwende eine interne DTD, das gefällt mir zwar nicht, aber da die DTD sowieso nur für ein einzelnes XML verwendet wird, und dieses zudem nicht sehr komplex ist, ist es nicht so tragisch.

      Danke und Gruss

      1. Hallo,

        Das hatte ich schon versucht, dann gibts ne MalFormedURLException.

        Huh? Also, das sollte schon so gehen. Hier geht das zumindest so. :-)

        Welche Klassen zum Einlesen der XML-Daten verwendest du denn?

        Ich habs jetzt anders gelöst und verwende eine interne DTD, das gefällt mir zwar nicht, aber da die DTD sowieso nur für ein einzelnes XML verwendet wird, und dieses zudem nicht sehr komplex ist, ist es nicht so tragisch.

        Ja. Aber anders wär's ja schon schöner, denke ich...

        Gruß
        Slyh

        1. Hallo,

          Ich verwende die Klassen aus javax.xml.parsers

          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
          dbf.setNamespaceAware(true);
          dbf.setValidating(true);
          DocumentBuilder db = dbf.newDocumentBuilder();
          doc = db.parse(xmlFile);

          Gruss