首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

dom4j 解析xml 忽略 dtd 解决生成 Document 还是很慢 的有关问题

2011-12-25 
dom4j 解析xml 忽略 dtd 解决生成 Document 还是很慢 的问题java代码SAXReadersaxReadernewSAXReader()s

dom4j 解析xml 忽略 dtd 解决生成 Document 还是很慢 的问题
java   代码   SAXReader   saxReader   =   new   SAXReader();        
saxReader.setValidation(false);        
saxReader.setIncludeInternalDTDDeclarations(false);        
saxReader.setIncludeExternalDTDDeclarations(false);        
Document   doc   =   saxReader.read(new   File(fileName));        
System.out.println(doc.asXML());  

无效

网上找了个
      public   class   IgnoreDTDEntityResolver   implements   EntityResolver
        {
                public   InputSource   resolveEntity(java.lang.String   publicId,   java.lang.String   systemId)   throws   SAXException,
                                java.io.IOException
                {
                        if   (systemId.equals( "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd ")
                                        ||   systemId.equals( "http://java.sun.com/dtd/ejb-jar_2_0.dtd ")
                                        ||   systemId.equals( "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd "))
                                return   new   InputSource(new   ByteArrayInputStream( " <?xml   version=’1.0′   encoding=’UTF-8′?> ".getBytes()));
                        else
                                return   null;
                }
        }

依然无效


老外的

import   java.io.ByteArrayInputStream;
import   java.io.IOException;

import   org.omg.CORBA.portable.InputStream;
import   org.xml.sax.EntityResolver;
import   org.xml.sax.InputSource;
import   org.xml.sax.SAXException;

      public   class   IgnoreDTDEntityResolver   implements   EntityResolver
        {
      public   InputSource   resolveEntity(String   publicId,   String   systemId)   {
                if   (   publicId.equals(   "-//Acme//DTD   Foo   1.2//EN "   )   )   {
                        InputStream   in   =   (InputStream)   getClass().getResourceAsStream( "hibernate.dtd ");
                        return   new   InputSource(   in   );
                }
                return   null;
        }


        }



还是无效

生成   Document   还是很慢

[解决办法]
学习中
[解决办法]
dom的话,是把整个树都存入内存,如果xml文件过大的话,载入内存时间会很长
sax的话,恰恰相反,载入一点,读取一点,速度较快
[解决办法]
楼主有用过dom4j的SAX方式读很大的XML吗?

热点排行