Я рекомендую JDOM FAQ:
[http://www.jdom.org/docs/faq.html#a0350]
Как сохранить DTD от загрузки?Даже когда я отключаю проверку, анализатор пытается загрузить файл DTD.
Даже когда проверка отключена, анализатор XML по умолчанию будет загружать внешний файл DTD, чтобы проанализировать DTD для внешнегодекларации объекта.Xerces имеет функцию для отключения этого поведения с именем "http://apache.org/xml/features/nonvalidating/load-external-dtd", и если вы знаете, что используете Xerces, вы можете установить эту функцию на компоновщике.
builder.setFeature(
"http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
Если вы используете другоеПарсер, как Crimson, лучше всего настроить EntityResolver, который разрешает DTD без фактического чтения отдельного файла.
import org.xml.sax.*;
import java.io.*;
public class NoOpEntityResolver implements EntityResolver {
public InputSource resolveEntity(String publicId, String systemId) {
return new InputSource(new StringBufferInputStream(""));
}
}
Затем в компоновщике ...
builder.setEntityResolver(new NoOpEntityResolver());
Тамявляется недостатком этого подхода. Любые объекты в документе будут преобразованы в пустую строку и фактически исчезнут. Если в вашем документе есть объекты, вам нужно установить код ExpExpandEntities (false) и убедиться, что EntityResolver подавляет только DocType.