ravenix

鱼如何控制自己的呼吸
posts - 7, comments - 3, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

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

Posted on 2005-08-30 15:57 ravenix 阅读(1057) 评论(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解析器,请参考解析器的文档。

只有注册用户登录后才能发表评论。


网站导航: