Posted on 2005-08-30 15:57
ravenix 阅读(1058)
评论(0) 编辑 收藏 所属分类:
XML-XSL-FO
如果用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解析器,请参考解析器的文档。