XML文档DOM、SAX、STAX解析方式

XML解析方式有三种:DOM、SAX、StAX

xml文档每个成分都是一个节点,每个xml标签对应一个元素节点:整个文档是一个文档节点,每个xml标签对应一个元素节点,包含早xml标签中是文本节点,注释是注释节点。

DOM解析:

DOM Document Object Model ----- 文档对象模型 基于树形结构的xml解析方式。 会将整个XML载入内存,以树形结构方式存储,易于编程 当xml文档是聚焦大,会造成较大的资源消耗。 即将整个xml 加载内存中,形成文档对象,所有对xml操作都对内存中文档对象进行

 

SAX解析:

基于事件模型的sax解析方式 当xml 文档非常大,不可能将xml所有数据加载到内存 即一边解析 ,一边处理,一边释放内存资源 ---- 不允许在内存中保留大规模xml 数据 使用推模式如下图所示

即由服务器为主导,向客户端主动发送数据( 推送 ) 推模式(事件由解析器产生并通过回调函数发送给应用程序)

589c3801ef9179ea2ae8cfe94477eacfd5f.jpg

缺点:不存储xml文档结构,开发人员自己维护业务逻辑涉及的多层节点之间关系。

流式处理所以只能向后单向进行,无法像dom那样自由导航到之前处理过得节点上重新处理,也不支持xPath

stax 

STAX 是一种 拉模式 XML 解析方式(SAX性能不如STAX,STAX技术较新)

采取如下图所示的模式

即拉模式由客户端为主导,主动向服务器申请数据( 轮询 )(应用程序通过调用解析器推进解析进程)

2bda48fe604c79051043a830e90ce01fbfb.jpg

简化了处理xml文档代码,可同时处理多个xml文档,可决定何时停止解析。

 

 

转载于:https://my.oschina.net/u/3795791/blog/2221889

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以使用多种方式解析XML格式文件,常用的有DOMSAX两种解析方式DOM(Document Object Model)是将整个XML文档以树形结构加载到内存中的解析方式。它将XML文档解析为一个包含节点对象的树,通过遍历树的节点来获取和操作XML文档的内容。DOM解析方式相对简单,适用于小型XML文件或需要随机访问多个节点的情况。但是,由于将整个XML文档加载到内存中,所以对于大型XML文件来说,会占用大量内存,并可能导致内存溢出。 SAX(Simple API for XML)是基于事件驱动的解析方式。在SAX解析中,当解析器遇到XML文件中的节点时,它会触发事件,然后将事件交给事先注册的事件处理程序进行处理。SAX解析方式不需要将整个XML文档加载到内存中,适用于处理大型XML文件。然而,由于SAX是基于事件的,所以只能按顺序读取XML文档而不能随机访问节点。 除了DOMSAX,还有一些其他的Java解析库可用于解析XML文件,如JDOMStAX和XPath等。JDOM是基于Java Collections框架的解析库,提供了简单易用的API;StAX是一种流式解析方式,类似于SAX,但API更加易用;XPath是一种用于在XML文档中定位节点的查询语言。 通过使用这些Java解析方式,我们可以方便地读取和操作XML格式的文件,提取其中的数据并进行处理,使得我们能够轻松地与其他系统进行数据交互。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值