Скажите JAXP путь к файлу DTD
У меня есть XML-файлы со ссылкой на файл Dtd.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE varman SYSTEM "referenced.dtd">
...
Мне удалось прочитать эти файлы с помощью JAXP, но только если файл referenced.dtd находится в той же папке, что и файл XML. В противном случае я получаю исключение, что файл dtd не может быть загружен. И я не мог найти место, куда вставить обработчик или что-нибудь, чтобы решить этот пропавший ресурс. Пожалуйста, дайте мне просветление!
1 ответ
Используйте настройки свойств, чтобы разрешить внешние пути:
Добавьте обработчик ошибок, чтобы перехватить неподдерживаемые свойства:
public boolean isNewPropertySupported() {
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = spf.newSAXParser();
parser.setProperty("http://javax.xml.XMLConstants/property/accessExternalDTD", "file");
} catch (ParserConfigurationException ex) {
fail(ex.getMessage());
} catch (SAXException ex) {
String err = ex.getMessage();
if (err.indexOf("Property 'http://javax.xml.XMLConstants/property/accessExternalDTD' is not recognized.") > -1)
{
//expected, jaxp 1.5 not supported
return false;
}
}
return true;
}