Java使用SAX解析XML实战

本文介绍了Java中使用SAX解析XML的方法,适用于处理大型XML文件或只需读取数据的场景。通过自定义SAXHandler实现DefaultHandler,处理startDocument、startElement、characters、endElement和endDocument等事件,确保数据正确解析。文中还特别提到如何处理字符内容超过2048长度的问题,利用StringBuilder避免数据丢失。
摘要由CSDN通过智能技术生成

目前解析XML的方式有很多,常用的有Dom,jdom,dom4j,SAX等方式解析xml文件。各种方法应用场景不太一致。下面简单介绍一下Dom和SAX解析Xml文件的应用场景。

1、使用Dom解析Xml,每次需要把xml文件整个加载到内存中,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。应用场景如下:

a:xml文件或者xml流内容较少,

b:机器处理能力较强(硬盘,内存较为充足)

c:需要在解析的过程中,对文件内容进行,增、删、改、重新排列等操作。

缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;

优点:由于整个文档树在内存中,可以方便操作数据(场景c);

2、使用SAX解析XML基于事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。应用场景如下:

a:只需要从xml文件或者xml流中读取并保存的操作

b:机器可扩展性能有限(硬件资源对程序运行所需要的时间空间要求苛刻)

关于原理和概念,这里不再赘述,直接上代码。

我遇到的应用场景:从xml文件中读取数据,并保存到数据库。

1、自定义SaxHandler实现DefaultHandler,并处理相应的事件,如下:

a:startDocument():文档解析开始时调用,该方法只会调用一次

b:startElement(String uri, String localName, String name, Attri

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值