xml解析器
xml解析器
为了让我们的应用程序不依赖于具体的解析器,让我们以统一的接口来访问XML文档java获取xml解析器,Sun公司开发了JAXP(Java API For XML )API。
JAXP没有扩充解析器新的功能,它是对解析器的一个封装,使开发人员能够独立于具体的解析器,这样我们就可以在应用程序中任意更换解析器,而不用更改应用程序代码。现在主流的解析器都支持DOM和SAX,所以JAXP也都支持。JAXP现在的版本是1.3包含在JDK5.0之中。
javax.xml包及子包,org.w3c.dom包及子包,org.xml.sax包及子包。javax.xml包及子包主要是获取解析器的实例xml解析器,获取到解析器实例后就可以对XML进行读取,如果我们使用DOM解析,那么就使用org.w3c.dom包及子包中的接口或者类,反之使用org.xml.sax包及子包中的接口或者类。那怎么通过JAXP获取解析器实例呢?
在javax.xml.这个包中提供了四个类、ry、、 前两个是获取DOM解析器实例的,后两个是获取SAX解析器实例的。
一、获取DOM解析器实例
test; java.io.*; javax.xml..*; org.w3c.dom.; class { void main( args) { try { ry = ry.(); = .(); = .parse(new (“my.xml”)); } catch ( e) { e.(); } } }
package test; import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.Document; public class JAXPTest { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new FileInputStream("my.xml")); } catch (Exception e) { e.printStackTrace(); } } }
以上代码的对象就是XML文档树,XML文档的数据就在此对象中。
二、更改解析器
更改 JAXP 工厂类使用的解析器很容易。更改解析器实际上意味着更改解析器工厂,因为所有 和 实例都来自这些工厂。工厂确定加载哪个解析器,所以必须更改工厂。要更改 接口的实现,请设置 Java 系统特性 javax.xml..。如果未定义此特性,则返回默认实现(不管开发商指定哪个解析器)。同一规则适用于所使用的 ry 实现。在这种情况下,将会查询 javax.xml..ry 系统特性。
三、JAXP API怎样加载解析器
1、使用系统属性
如果我们在调用ry = ry.();代码前设置了系统属性,如下:
.(“javax.xml..ry”,”org…jaxp.”);
那么JAXP就会使用你提供的解析器。设置系统属性还可以使用另外一种方式,运行该类的时候使用-D参数,如:java -.xml..ry=org…jaxp. .
2、在JRElib文件夹下建立jaxp.文件,在文件中添加如下内容:
<img src="/wp-content/uploads/2026/10/1792746727123_0.jpg" alt="java获取xml解析器“/ style=”max-width: 100%; height: auto; display: block; margin: 1.6em auto; border-radius: 6px; border: 1px solid #b280e0;”>
javax.xml..ry=org…jaxp.
3、查找解析器jar文件的META-INF目录
在此目录下如果含有javax.xml..ry文件,则通过此文件的内容加载解析器。
4、如果前三种方式都没有找到解析器,JAXB使用缺省的解析器 (JAXP 1.1 捆绑了 )。
下面是一篇关于JAXP有趣的文章《XML api折射出sun与IBM的恩仇》,可供参考一下,原文地址:
最初的xml解析器是sun的和IBM的java获取xml解析器,这两个开源项目都捐给了组织,后来发展很快,基本没有人使用。
1.4 版本起,用于 XML 处理的 Java API 就已经加入了Java 2 平台中。 利用该 API,可通过一系列标准的 Java 平台 API 来处理 XML 文档。
因此,也就无需另外添加 XML 处理包了。sun的JDK1.4使用,IBM的JDK使用。
如果打算把sun 的jdk程序移植到IBM的JDK下,注意解析器不同,XML处理会出问题。这就说明了java不是“一次编译,到处运行”java获取xml解析器,而是“一次编译,到处调试”。
如果你把IBM的JDK移植到SUN的JDK下,即使把包引入,JDK还是使用xml解析器,不信你运行java -试一试。
解决的办法就是在在JRElib目录下,建立一个jaxp.的文件,
内容如下:
javax.xml..ry=org…jaxp.
javax.xml..=org…jaxp.
就可以使用。
或者使用命令行
# Add the XML jars and set the JAXP names
# JAXP setup()
=$:../lib/.jar
<img src="/wp-content/uploads/2026/10/1792746727123_1.jpg" alt="java获取xml解析器“/ style=”max-width: 100%; height: auto; display: block; margin: 1.6em auto; border-radius: 6px; border: 1px solid #b280e0;”>
JAXP=-.xml..ry=org…jaxp.
JAXP=”$JAXP -.xml..=org…jaxp.”
# Add the XML jars and set the JAXP names
# JAXP setup
=$:../lib/.jar
JAXP=-.xml..ry=org…jaxp.
JAXP=”$JAXP -.xml..=org…jaxp.”
最终sun还是指定JAXP规范,JSR 206 Java API for XML (JAXP) 1.3,他已经由JDK1.5实现。
JAXP实现了XPath,但是xalan的org..xpath. 类已经移植到了 JRE 1.5 中,重构为..xpath..。
如果在以前的JDK中,使用含 类的 jar,例如 xalan-2.4.1.jar。 将该 jar 加入到 (类路径)。
W3C的DOM标准API非常难用,于是有人开发 Java专用的XML API,这就是jdom=java+DOM。其中一部分人,去开发dom4j,这个不是非常标准,但是速度很快。
使用JDOM隐含服务器风险,因为JBoss和都是基于JDOM开发的,在这两个服务器下使用JDOM,必须进行相应的设置,而且你的JDOM版本必须与服务器使用的相近,
因为JVM只加载一份相同的类,服务器优先加载自己使用的JDOM,你开发用的JDOM不会被加载,你的应用就会出错。
使用Dom4J隐含工程问题,主要是,如果你开发的项目和合并,Dom4J版本不兼容的话,寻找dom4j相同版本,或者你改程序适应的Dom4j。
java没有的DLL地狱,但是java的jar地狱有过而无不及啊。
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » xml解析器
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

