Chinaunix首页 | 论坛 | 博客
  • 博客访问: 807885
  • 博文数量: 780
  • 博客积分: 7000
  • 博客等级: 少将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-12 09:11
文章分类

全部博文(780)

文章存档

2011年(1)

2008年(779)

我的朋友
最近访客

分类:

2008-09-12 09:12:48

作者: Cherami

    之所以要这么做是因为我们的XML肯定是合法的,不需要验证,另外我们的网络需要代理才能上网,解析的时候会很慢,不需要解析的时候运行只要不到一分钟,解析要两分钟以上,有时候甚至需要10分钟左右。

    可能有人认为很简单,只需要设置DocumentBuilderFactory.setValidating(false),其实这个只能让解析器不验证DTD,解析器还是会读取DTD的,解决的方法是实现EntityResolver接口,对于我们的系统,我实现的类的代码为:

   public class IgnoreDTDEntityResolver implements EntityResolver
    {
        public InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws SAXException,
                java.io.IOException
        {
            if (systemId.equals("")
                    || systemId.equals("")
                    || systemId.equals(""))
                return new InputSource(new ByteArrayInputStream("".getBytes()));
            else
                return null;
        }
    }

稍微说明下方法的两个参数publicId和systemId,假设DTD声明为:

那么publicId为-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN
systemId为
你可以根据自己的需要进行处理。

【责编:Peng】

--------------------next---------------------

阅读(326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~