XML-Datei einlesen bei fehlender dtd, java

Hallo zusammen,

Nachdem mir bei meinem letzten Problem so schnell und kompetent geholfen wurde, versuche ich es jetzt nochmal.

Ich arbeite an einem Java-Programm, das XML-Dateien einliest und daraufhin verschiedene Prüfungen durchführt. Das Programm läuft und funktioniert.
Allerdings kann es vorkommen, dass eine XML-Datei einen Doctype-Verweis (dtd) enthält, der einen Internetlink beinhaltet. Wird das Programm dann ausgeführt, ohne dass eine Internetverbindung besteht, „meckert“ der XML-Parser verständlicherweise, dass die dtd-Datei nicht gefunden wird. Bisher kein Problem. In der neuen Programmversion soll dieses „Meckern“ aber abgestellt werden können, sodass die XML-Datei dennoch eingelesen wird und den Prüfungen unterzogen werden kann.
Leider habe ich die dazu nötigen Einstellungen bisher nicht finden können. Derzeit wird die XML-Datei (bzw. entsprechend gegebener XPath-Ausdrücke bestimmte Knoten daraus) über folgenden Code eingelesen:

// XPath-Expression compilieren
synchronized (xPath) {
xPathExpression = xPath.compile(xPathString);
}

// XPath-Ausdruck auf InputSource anwenden
return (NodeList)xPathExpression.evaluate(inputSource, XPathConstants.NODESET);

xPath ist dabei ein javax.xml.xpath.XPath und xPathExpression eine javax.xml.xpath.XPathExpression. Könnt Ihr mir da weiterhelfen? Ich kann auch andere XML-Parser (JDOM, dom4j) nutzen, das lässt sich ja schnell umbauen. Wenn Ihr also „nur“ für einen anderen Parser eine Lösung kennt, bitte her damit…:wink:

Ich hoffe, ich habe das Problem klar genug beschrieben und danke schonmal,

Mfg Martin

P.s.: Eventuell ist diese Frage jetzt leider doppelt von mir gestellt. Dann bitte rauslöschen.

Lösung ist gefunden. Falls nochmal wer das Problem hat, folgende Zeilen lösen das Problem:

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setValidating(false);
documentBuilderFactory.setFeature(„http://apache.org/xml/features/nonvalidating/load-ex…“, false);
Object documentBuilder = documentBuilderFactory.newDocumentBuilder();
Object localObject2 = ((DocumentBuilder)documentBuilder).parse(inputSource);
return (NodeList)xPathExpression.evaluate(localObject2, XPathConstants.NODESET);