可是为什么digester可以正常的对这些文档进行解析,我看他是用了
        factory.setValidating(false);
我想意思就是忽略doctype的内容,可是我自己的程序里用了这个好象也没有什么作用

解决方案 »

  1.   

    build(); 一般用一个参数 true false地据说build() 不带参数, 就可以略过dtd了
      

  2.   

    你说的是哪个解释器的build()?
    saxbuilder是没有你说的那种参数的
      

  3.   

    JDOM9的SaxBuilder都不用特殊设置。直接走就可以了。JDK1.4的解吸器需要设置true或false。
      

  4.   

    feiyuegaoshan(飞跃):能给个例子吗?我把JDOM9下了,还是不行?您看看我的程序有什么问题?
          SAXBuilder buildGraph = new SAXBuilder();
          buildGraph.setValidation(false);
          File f = new File("");
          //修改Boco.xml
          Document doc;
          doc = buildGraph.build(new File(f.getAbsolutePath() +"/web.xml"));
    catch的错误是
    java.net.UnknownHostException: java.sun.com at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:153) at java.net.Socket.connect(Socket.java:426) at java.net.Socket.connect(Socket.java:376) at sun.net.NetworkClient.doConnect(NetworkClient.java:139) at sun.net.www.http.HttpClient.openServer(HttpClient.java:386) at sun.net.www.http.HttpClient.openServer(HttpClient.java:602) at sun.net.www.http.HttpClient.<init>(HttpClient.java:303) at sun.net.www.http.HttpClient.<init>(HttpClient.java:264) at sun.net.www.http.HttpClient.New(HttpClient.java:336) at sun.net.www.http.HttpClient.New(HttpClient.java:317) at sun.net.www.http.HttpClient.New(HttpClient.java:312) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:481) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:472) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:574) at java.net.URL.openStream(URL.java:960) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source) at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source) at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.jdom.input.SAXBuilder.build(SAXBuilder.java:370) at org.jdom.input.SAXBuilder.build(SAXBuilder.java:724) at org.jdom.input.SAXBuilder.build(SAXBuilder.java:703)谢谢帮助!
      

  5.   

    看来是你的doctype 指向了一个连接不上的地址啊
      

  6.   

    将doctype这个tag注释或删除就可以嘞。
      

  7.   

    我以前都是将tag注释掉的。关注,看看大虾们对此有什么见解。
      

  8.   

    我跟踪了digester的源码,我发现他在解析的时候,调用了一个regiest,将本地的jar包中的resource中的dtd文件,对这个doctype中的内容作了替换,但是看digester半天没有看明白,他是如何进行document的builder的。
    还请各位提出意见!
      

  9.   

    DOM解析器默认是忽略检查文档的有效性的,但我也遇过楼主这种情况!没解决!
    不知其他解析器怎样!