# DTD suchen



## spike78 (20. Okt 2006)

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


----------



## foobar (20. Okt 2006)

Das kannst du über den System bzw. Public-Identifier in deinem XML-File angeben.


----------



## spike78 (20. Okt 2006)

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


----------



## foobar (20. Okt 2006)

```
<?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 (20. Okt 2006)

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 (20. Okt 2006)

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 (20. Okt 2006)

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:


```
private ZSAXParser m_oparseout=null; 

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

Gruß


----------

