断开网络dom4j无法解析有网络dtd的xml文件的解决办法
2010-09-25 09:41
543 查看
struts2的配置文件的stru.xml的dtd定义是如下这样
1.<!DOCTYPE struts PUBLIC "-
2.//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
3."http://struts.apache.org/dtds/struts-2.0.dtd" > 使用dom4j解析含有这样dtd的xml文件时,它会从网络找到这个文件对xml文件进行校验。但是如果电脑断开网络的话就会出现错误说找不到dtd文件并解析失败。
解决的办法一就是解析的时候把上边那句从xml文件中删除或改成本地dtd(struts2的分发包里有这个dtd文件)。删除不太好,之后还得加上。改成本地文件可以,就是麻烦了点,还要是有多个配置文件就更麻烦了。下边就是最简单的解决办法,在dom4j的SAXReader读取xml文件时加上如下一句话
1. public static Document getDoc(String file) throws Exception {
2. SAXReader saxReader = new SAXReader();
3. //加上这句4. saxReader.setEntityResolver(new MyEntityResolver());
5. return saxReader.read(new File(file));
6. }
MyEntityResolver这个是自定义的类
1.import java.io.*;
2.import org.xml.sax.InputSource;
3.import org.xml.sax.EntityResolver;
4.5.public class MyEntityResolver implements EntityResolver {
6.7. public InputSource resolveEntity(String publicId, String systemId) {
8. return new InputSource(new StringBufferInputStream(""));
9. }
10.}
这样就行了,而且由于不用去网络上获取dtd,节省了5~6秒的时间
1.<!DOCTYPE struts PUBLIC "-
2.//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
3."http://struts.apache.org/dtds/struts-2.0.dtd" > 使用dom4j解析含有这样dtd的xml文件时,它会从网络找到这个文件对xml文件进行校验。但是如果电脑断开网络的话就会出现错误说找不到dtd文件并解析失败。
解决的办法一就是解析的时候把上边那句从xml文件中删除或改成本地dtd(struts2的分发包里有这个dtd文件)。删除不太好,之后还得加上。改成本地文件可以,就是麻烦了点,还要是有多个配置文件就更麻烦了。下边就是最简单的解决办法,在dom4j的SAXReader读取xml文件时加上如下一句话
1. public static Document getDoc(String file) throws Exception {
2. SAXReader saxReader = new SAXReader();
3. //加上这句4. saxReader.setEntityResolver(new MyEntityResolver());
5. return saxReader.read(new File(file));
6. }
MyEntityResolver这个是自定义的类
1.import java.io.*;
2.import org.xml.sax.InputSource;
3.import org.xml.sax.EntityResolver;
4.5.public class MyEntityResolver implements EntityResolver {
6.7. public InputSource resolveEntity(String publicId, String systemId) {
8. return new InputSource(new StringBufferInputStream(""));
9. }
10.}
这样就行了,而且由于不用去网络上获取dtd,节省了5~6秒的时间
相关文章推荐
- Qt网络编程遇到无法解析的外部命令解决办法
- 解决dom4j解析xml文件时访问DTD文件问题
- 转: dom4j中使用xpath解析带命名空间的xml文件,取不到节点的解决办法
- IE无法解析XML文件的解决办法
- dom4j中使用xpath解析带命名空间的xml文件,取不到节点的解决办法
- dom4j中使用xpath解析带命名空间的xml文件,取不到节点的解决办法
- 关于网络上下载开源程序的无法编译执行的解决办法
- 无法解析此远程名称: 'www.***.com' 解决办法
- Win7/Win8因网络配置导致无法上网的解决办法
- 开启Hadoop2.6.0出现ssh无法解析主机名等错误提示的解决办法!
- win7宽带连接图标上有个黄色惊叹号,无法连接到网络解决办法
- jsoup getElementsByClass 遇到空格无法解析的解决办法
- jar中资源无法找到报 FileNotFoundException的深度(深入JDK)解析及其终极解决办法
- plsql登录时报无法解析指定的连接标识符、无法解析服务名错误的解决办法
- bstr error LNK2019: 无法解析的外部符号 "char * __stdcall _com_util::ConvertBSTRToString(wchar_t *)" 的解决办法
- 使用PLSQL Developer时,“ORA-12154: TNS:无法解析指定的连接标识符”问题的一个解决办法
- win7网络发现不能启用,无法共享其他机器的解决办法
- 利用dom4j解析xml文件时发生The reference to entity password must end with the ';' delimiter.的解决方法
- Error LNK2001 无法解析的外部符号 的几种情况及解决办法
- 操作系统启动不了和网络连接无法使用的故障问题解决办法