说明:<!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了。
======