原文地址:
http://ephon.spaces.live.com/blog/cns!796FAD06E2C0A525!589.entry
JAXP DocumentBuilderFactory 以及 SAXParserFactory 具体实现的查找步骤
1、使用"javax.xml.parsers.DocumentBuilderFactory"系统属性。 即使用Java -Djavax.xml.parsers.DocumentBuilderFactory=.. ..定义的系统属性,可以通过System.getProperty("javax.xml.parsers.DocumentBuilderFactory")获得;
2、使用"jre\lib"下面的jaxp.properties 文件中键值为 javax.xml.parsers.DocumentBuilderFactory属性获得;
3、使用运行时类路径中JAR包中的"META-INF/services/javax.xml.parsers.DocumentBuilderFactory"文件中的第一行的内容作为具体的Factor实现;
同样了,对于寻找javax.xml.parsers.SAXParserFactory的过程与上述相同,只不过,属性名称为"javax.xml.parsers.SAXParserFactory"。
对于sun的jre来说,如果上述的三个地方均找不到,那么:
对于javax.xml.parsers.DocumentBuilderFactory: sun提供默认实现:com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl 对于javax.xml.parsers.SAXParserFactory: sun提供默认实现:com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
另外,Trouble-shooting的好工具:
请设置属性 -Djaxp.debug=1,系统会把寻找javax.xml.parsers.DocumentBuilderFactory和javax.xml.parsers.SAXParserFactory 的具体过程给打印出来。就像下面:
JAXP: created new instance of class com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl using ClassLoader: sun.misc.Launcher$AppClassLoader@7259da
JAXP: find factoryId =javax.xml.parsers.DocumentBuilderFactory
JAXP: loaded from fallback value: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
.........
JAXP: find factoryId =javax.xml.parsers.DocumentBuilderFactory
JAXP: found jar resource=META-INF/services/javax.xml.parsers.DocumentBuilderFactory using ClassLoader: nc.bs.mw.start.BootstrapClassLoader@e5b723
JAXP: found in resource, value=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
JAXP: created new instance of class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl using ClassLoader: nc.bs.mw.start.BootstrapClassLoader@e5b723
JAXP: find factoryId =javax.xml.parsers.DocumentBuilderFactory
JAXP: found jar resource=META-INF/services/javax.xml.parsers.DocumentBuilderFactory using ClassLoader: nc.bs.mw.start.BootstrapClassLoader@e5b723
.........
JAXP: find factoryId =javax.xml.parsers.DocumentBuilderFactory
JAXP: found jar resource=META-INF/services/javax.xml.parsers.DocumentBuilderFactory using ClassLoader: WebappClassLoader
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
nc.bs.mw.start.BootstrapClassLoader@e5b723
.........
分享到:
相关推荐
在"XMLParserDemo"项目中,你可以找到上述三种解析方式的具体实现,包括如何读取XML文件,处理标签和属性,以及如何在Android应用中展示解析结果。通过这个项目,初学者可以更好地理解Android中XML解析的各种方法...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件以及文档存储等领域。本文将深入探讨两种主要的XML解析方法——SAX(Simple API for XML)和DOM(Document Object Model...
在Android开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,用于...在提供的`TestXML`和`TestPull`源码中,你可以找到这些方法的具体实现,通过运行这些示例,可以更好地理解和掌握XML解析技术。
本文将深入探讨XML解析的概念、原理以及在实际应用中的例子,旨在帮助你更好地理解和掌握XML处理。 XML解析是将XML文档转换为程序可以理解的数据结构的过程。这个过程分为两种主要类型:DOM(Document Object Model...
在实际项目中,使用Xerces.jar进行XML处理时,你需要先将其添加到项目的类路径中,然后通过Java的`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.SAXParserFactory`等类创建解析器实例,进一步...
可能使用了如`DocumentBuilderFactory`和`DocumentBuilder`来创建DOM对象,或者使用`SAXParserFactory`和`SAXParser`来实现SAX解析。类中还可能包含了错误处理和异常捕获机制,以确保在处理XML文件时的健壮性。 ...
**7.7 用反射技术实现一个简单的 Web 服务器** - **原理**: 动态加载和执行 Web 请求处理逻辑。 - **步骤**: 1. 解析 HTTP 请求。 2. 加载相应的类。 3. 执行处理方法。 **7.8 内省——BeanUtils 工具包** - **...