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

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们