# Alternative DTD angeben



## ReMo (22. Aug 2011)

Guten Tag zusammen,

daich mittlerweile Stunden nach einer Lösung für mein Problem suche, wende ich mich, in der Hoffnung ihr könnt mir helfen, an euch.( Als Student hat man die Zeit )

Mein Problem ist, dass ich in der zu verarbeitenden XML-Datei den Verweis auf eine DTD-Datei habe die im Web liegt. Daraus ergibt sich das Problem, dass die Datei ohne Internetverbindung nicht geparst werden kann (UnknownHostException). Daher suche ich nach einer Möglichkeit eine lokale Kopie der DTD anzugeben, sodass die XML dennoch geparst werden kann.

Hier ist einmal mein aktueller Code:


```
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;


public class XMLTest {
	private SAXBuilder builder = new SAXBuilder();
	private Document doc;
	private List<Element> LPlaylists;

	public XMLTest(String Dir){
		
		try {
			doc = builder.build(Dir);
		} catch (JDOMException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();

		}	
	}
```

Vielen Dank schonmal für jegliche Hilfe


----------



## DP (21. Nov 2011)

versuch mal den hier:


```
builder.setValidation(false);
builder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
```


----------



## ReMo (22. Nov 2011)

Vielen Dank!

Hatte das Projekt zwischenzeitlich schon aufgegeben, da es nur ein Freizeitprojekt ist.
Im übrigen reicht sogar schon die Zeile:

```
builder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
```

Wie kommt man auf sowas? Ich habe ewig gesucht und nie was in diese Richtung gefunden.

Gruß

ReMo


----------



## mvitz (22. Nov 2011)

Ansonsten kann man auch die DTD runterladen und über ein Catalog File den Zugriff vom Web auf die Lokale Datei so umbiegen.

Für Saxon funktioniert das z.B. so: How to use a catalog file


----------

