applet中解析xml的bug

在applet中使用jdk自带的dom或sax解析xml时,会在一定人品的情况下出现下边的错误,主要表现在部分机器能正常,部分机器不正常。错误提示如下
dom报错
javax.xml.parsers.FactoryConfigurationError: Provider <!DOCTYPE HTML> not found
at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)
......
sax报错
javax.xml.parsers.FactoryConfigurationError: Provider <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> not found
at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:134)




查看javax.xml.parsers.DocumentBuilderFactory.newInstance源码
public static DocumentBuilderFactory newInstance() {
try {
return (DocumentBuilderFactory) FactoryFinder.find(
/* The default property name according to the JAXP spec */
"javax.xml.parsers.DocumentBuilderFactory",
/* The fallback implementation class name */
"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
} catch (FactoryFinder.ConfigurationError e) {
throw new FactoryConfigurationError(e.getException(),
e.getMessage());
}
}

在applet调用DocumentBuilderFactory.newInstance,会发现它加载<!DOCTYPE HTML>.class这个类,似乎没有正确加载com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl。
原代码为:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();

解决方法一,直接使用DocumentBuilderFactoryImpl来创建DocumentBuilder
DocumentBuilderFactoryImpl s = new DocumentBuilderFactoryImpl();
DocumentBuilder builder = s.newDocumentBuilder();


解决方法二,把xercesImpl.jar也加进applet中,这个方法同样可以解决问题。

参考资料:
http://stackoverflow.com/questions/9001094/getting-error-provider-com-sun-org-apache-xerces-internal-jaxp-documentbuilderf
http://stackoverflow.com/questions/3085951/problem-with-java-xml-parsing-factoryconfigurationerror-provider-not-found

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇