指定dtd文件路径(XMLReader 中指定 xml对应的dtd路径)

说明:<!DOCTYPE xxx SYSTEM "test.dtd">

解析xml是在同级目录下放置了test.dtd文件,可是还是不能找到这个dtd文件,于是就用了下面的方法:

=================================

XMLReader reader = XMLReaderFactory.createXMLReader();

//reader.setErrorHandler(errorHandler);
//reader.setContentHandler(contentHandler);

reader.setEntityResolver(new EntityResolver() {

    @Override
    public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
      String dtdURL = “C:\\dtdlib\\test.dtd";//路径可以自己指定
     // System.err.println("dtdURL:"+dtdURL);
     return new InputSource(dtdURL);
    }
   });

reader.parse(inputSource);
==================================

小插曲:其实如果xml中没有类似<!DOCTYPE xxx SYSTEM "xx.dtd">这样的声明,xml也同样能够正确解析,只需在XMLReader 的parse解析前对inputSource得到的字符串进行相关的处理即可,比如在字符串中加入这个声明。这样就可以不改变xml文档的情况下(有时项目中要求xml不可变),这时就可以动态的指定dtd了。

======

猜你喜欢

转载自niub.iteye.com/blog/1787608
今日推荐