设置digister不加载外部dtd,加快处理速度

如果用digister处理的xml里包含了外部dtd指定,即在!DOCTYPE中用PUBLIC指定外部dtd,即使使用了

digester.setValidating( false );

底层的sax解析器xerces仍然会去指定的地址去加载DTD,特别地,如果指定的地址无法获得DTD,就会抛出异常:
SAXException: The markup declarations contained or pointed to by the document type declaration must be well - formed

为了避免这个问题,可以使用这样的语句:
digester.setValidating( false );
digester.setFeature(
"http://apache.org/xml/features/nonvalidating/load-external-dtd " , false );

当然这个设置只有在底层的sax解析器是xerces才有效。如果你使用的是其它的sax解析器,请参考解析器的文档。

你可能感兴趣的:(设置digister不加载外部dtd,加快处理速度)