DTD suchen

Status
Nicht offen für weitere Antworten.

spike78

Bekanntes Mitglied
Hallo zusammen,

ich habe ein kleines Problem mit dem SAX Parser. Leider kenne ich mich mit diesem noch nicht so gut aus und hoffe nun auf Eure Hilfe.

Folgendes Problem.

Ich habe zwei XML Dateien, die ich mit SAX auslese und verarbeite. Dazu gibt es eine event.dtd die immer dort gesucht wird, wo meine XML Dateien liegen. Falls dies nicht so ist, kommt eine
"ava.io.FileNotFoundException: d:\event.dtd (Das System kann die angegebene Datei nicht finden)"

Wie kann ich meinem Programm nun mitteilen, dass es die DTD woanders suchen soll ?

Danke und Gruß

Michael
 

spike78

Bekanntes Mitglied
Hast du ein Beispiel für mich. Sorry, aber wie gesagt, habe damit noch nicht so viel Erfahrung.
 

foobar

Top Contributor
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config SYSTEM "book.dtd">
<book>

<chapter>
<title>Mein Buch</title>
</chapter>
</book>

Jetzt muß im selben Verzeichnis eine book.dtd liegen, gegen die geparsed wird.
 

spike78

Bekanntes Mitglied
Ok, aber das Problem dass ich dabei noch habe, ist das die DTD immer woanders liegen kann. Wo sich diese befindet, kann ich aus einer Systemvariabeln ermitteln. Dazu müsste ich mir erst den Pfad ermitteln und dann dem Parser sagen, such die DTD in diesem Pfad.

Gruß
 

foobar

Top Contributor
Das muß über die XML-Instanz gesteuert werden, weil sonst das File nicht mehr mit einem anderen Parser geparsed werden kann. Wie sieht dein File denn aus?

Mit DOM kannst du zwar Einfluss darauf nehmen wie Entities aufgelöst werden, also auch wo deine DTD liegt, aber sollte man sich gut überlegen.
 

spike78

Bekanntes Mitglied
Hi,

hier ein Auszug aus meiner XML Datei:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE eventlist SYSTEM "event.dtd">
<eventlist>
<event>
<attribute type="TESTACTIONS-TACT_ID">28294</attribute>
<attribute type="PROTOCOLS-PRC_NEW_VALUE">@NEW</attribute>
<attribute type="PROTOCOLS-PRC_FIELD">TACT_TESTER_USR_ID</attribute>
</event>

Den JDOM kann ich leider nicht verwenden, da die XML Datei ziemlich groß werden kann (50 MB).

Hier noch ein Teil vom Code:

Code:
 private ZSAXParser m_oparseout=null; 

 SAXParser parserout =factory.newSAXParser();
  m_oparseout = new ZSAXParser(sCompAttr,true,islog);
  parserout.parse(XML_Datei);

Gruß
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben