当前位置: 代码迷 >> XML/SOAP >> 指定dtd资料路径(XMLReader 中指定 xml对应的dtd路径)
  详细解决方案

指定dtd资料路径(XMLReader 中指定 xml对应的dtd路径)

热度:2068   发布时间:2013-02-26 00:00:00.0
指定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了。

======