java xml三种解析,Java三种方式解析xml

Java里边解析xml一般有三种常用的技术:

1、 Document Object Model (DOM),W3C里边一种成熟的标准。目前广泛使用的解析工具:JDOM DOM4J

2、 Simple API for XML (SAX),第一种被广泛接受的XML的API,成为事实上的标准。

3、 Streaming API for XML (StAX),在JSR-173中提到的一种很有前途的新型解析模型。

DOM解析是基于树结构的,它通过在内存构建整棵文档树,允许完全、动态访问XML文档的任何节点。在XMPP应用中,如果使用dom解析xml,会耗费很多时间,增加请求返回的时间。

2、SAX

SAX解析XML采用事件驱动的方式。虽然并不是W3C的标准,但它的API是公认的,很多解析器都是基于它的。当SAX解析器读取文档的时候会引发很多事件,这些事件会交给对应的事件处理者(event

handlers),控制权是在解析器,应用程序只是时间的接收者,由解析器调用应用程序注册的callback接口实现事件通知。三种基本的事件:

1. DTDHandler 访问XML的DTD内容

2. ErrorHandler 解析错误

3. ContentHandler 访问文档的内容

3、 StAX

StAX是一种令人振奋的新型解析技术,和SAX一样,它也采用了事件驱动模型。不过,在对于事件的处理上,SAX采用了“推模式”(push modal),而StAX则使用的是“拉模式”(pull model)。说得更加明白一些,就是这样:

SAX是自己按顺序把整个文档解析完,在它解析的过程,会主动产生事件交给程序中相应的处理函数来处理当前内容;而StAX是由程序来驱动整个解析过程,只有当程序发出解析请求的时候,解析器才会告诉相应的事件,然后程序根据事件再决定如何处理当前内容,应用程序可以将

事件对应的节点DOM载入内存中进行处理。

从这个原理来判断的话,StAX的实现显然要更加灵活,程序可以选择自己需要处理的部分,而SAX则一定会遍历整个文档。而据我的理解,将StAX叫成“程序驱动模型”可能更利于理解一些。

读取XML文档:

Iterator xml:方便的、容易使用的、迭代器风格的 API。更面向对象编程,对程序感兴趣的事件创建相应的对象,容易添加和删除事件event,易用扩展。

Cursor xml:

尽管迭代器风格的 API 非常方便和易于使用,它也带来了一些开销。解析器需要创建事件对象,这些对象在以后被无用单元收集器回收。对于高性能极其重要的应用程序(如J2ME),您可以选择基于指针的

API。XMLStreamReader&nbsp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值