原文地址:
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
.........
分享到:
相关推荐
下面我们将详细探讨如何使用`DocumentBuilderFactory`来解析XML文件,并通过实例讲解其核心步骤。 1. **获取`DocumentBuilderFactory`实例** `DocumentBuilderFactory.newInstance()`是获取DOM解析器工厂的标准...
Xerces 实现了 W3C 的 XML Schema 1.0 和 1.1 规范,以及 XML 1.0 和 1.1 的解析标准,同时提供了对 DOM、SAX 和 JAXP 接口的支持。 描述 "Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found...
首先,Java标准库JDK提供了一个内置的API——javax.xml.parsers包,它包含了处理XML的基本工具,如DocumentBuilderFactory和SAXParserFactory。以下是使用DOM解析器读取XML文件的基本步骤: 1. 引入必要的Java库: ...
以下是使用Java实现DOM解析的基本步骤: - 导入必要的库:`javax.xml.parsers.DocumentBuilderFactory` 和 `org.w3c.dom.*` - 创建DOM解析器工厂:`DocumentBuilderFactory dbFactory = DocumentBuilderFactory.new...
开发者可以通过JAXP提供的工厂类(如DocumentBuilderFactory和SAXParserFactory)来创建解析器实例。这些工厂类遵循统一的接口,使得在不同实现之间切换变得无缝。例如,如果一个应用程序最初使用Sun的内置解析器,...
在 `try` 块中,首先通过 `DocumentBuilderFactory.newInstance()` 创建了一个 `DocumentBuilderFactory` 实例,这个工厂类用于生成 `DocumentBuilder`,它能够解析 XML 文档。 接着,`dombuilder.parse(is)` 使用 ...
下面以DOM为例,介绍具体的实现步骤: 1. 引入所需的库: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c....
为了更具体地了解如何实现这一功能,我们需要考虑以下几个方面: 1. **表结构**:首先需要明确存储学生信息的表的结构,包括字段名称和数据类型。 2. **查询条件**:其次确定查询的具体条件,例如是否需要根据特定...
在"XMLParserDemo"项目中,你可以找到上述三种解析方式的具体实现,包括如何读取XML文件,处理标签和属性,以及如何在Android应用中展示解析结果。通过这个项目,初学者可以更好地理解Android中XML解析的各种方法...
8. **XML处理**:Java API for XML Processing (JAXP) 提供了解析XML文档、转换XML和DOM操作等功能,如DocumentBuilderFactory、SAXParserFactory和TransformerFactory等。 JDK API文档的中文版极大地方便了中国...
其中 `SiteManager` 和 `PublicationFactory` 分别用于获取站点和发布,具体实现如下: ```java SiteManager siteManager = SiteManagerFactory.newInstance().getSiteManager(session); Site site = siteManager....
JDK6.0提供了处理XML的API,如`javax.xml.parsers`包中的DocumentBuilderFactory和SAXParserFactory,用于解析XML文档。`javax.xml.transform`包则提供了转换XML数据的能力,如XSLT转换。 七、数据库连接 JDBC...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件以及文档存储等领域。本文将深入探讨两种主要的XML解析方法——SAX(Simple API for XML)和DOM(Document Object Model...
这种灵活性通过使用“插件层”技术实现,该技术可以利用SAX或DOM API的具体实现,也可以插入XSL处理器来控制XML数据的表现形式。 #### 知识点二:JAXP的主要API - **包结构**:JAXP的主要API定义在`javax.xml....
由于篇幅限制,这里仅提供每个解析方法的简要示例,具体实现可参考XMLdemo项目中的代码: - SAX解析: ```java class MyHandler extends DefaultHandler { @Override public void startElement(String uri, ...
例子中首先创建了一个DocumentBuilderFactory实例,然后通过这个实例获取了一个DocumentBuilder。接着,我们使用parse方法解析了一个名为example.xml的XML文件。之后,我们通过获取根元素并遍历其子元素来读取XML...
导入到Eclipse后,你可以查看源代码,了解具体的实现细节,并进行测试以熟悉XML文件的操作流程。这将帮助你更好地理解和掌握Java处理XML文件的能力。同时,也可以通过调试和修改代码,加深对XML解析和生成过程的理解...
通过查看这些源代码,我们可以深入学习Java如何构建网络应用程序,以及如何实现浏览器的一些基本功能。不过,由于没有具体的代码内容,我们无法提供更详细的分析。如果你能够提供代码示例或更详细的信息,我们可以...
本实例将详细介绍Android中三种常见的XML解析方式:DOM解析、SAX解析以及Pull解析。这三种方法各有优缺点,适用于不同的需求场景。 1. DOM解析(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成...
具体的实现可能涉及以下步骤: 1. 使用`XmlPullParser`或`XmlResourceParser`(如果XML是资源文件)初始化解析器。 2. 在循环中处理解析事件,读取配置项的键值对。 3. 可能会将解析结果存储在`HashMap`或其他数据...