XML文件读取

DOM方式:

1.创建DocumentBuilderFactory的对象dbf。

DocumentBuilderFactory dbf = DocumnetBuilderFactory.instance();

2.利用dbf创建DocumentBuilder对象

DocumentBuilder db = dbf.newDocumentBuilder();

3.用db的parse方法获取Document对象。

Document document = db.parse("*.xml");

4.利用Document对象进行节点解析。

SAX方式:

1.创建SAXParserFactory对象spf。

SAXParserFactory spf = SAXParserFactory.newInstance();

2.利用spf的newSAXParser()方法获取SAXParser()实例对象sp。

SAXParser sp = factory.newSAXParser();

3.创建一个继承于DefaultHandler类的类,并实例化其对象handler。

SAXHandler handler = new SAXHandler();

4.利用sp的parse(“….xml”,handler)方法解析XML文件。

sp.parse("*.xml",handler);

重写handler类对象的方法…

startDocument、endDocument、startElement、endElement、characters方法...

JDOM方式:

1.创建一个SAXBuilder对象

SAXBuilder sb =newSAXBuilder();

2.创建输入流,将xml文件加载到输入流中

Inputstream in=new FileInputstream("xxx.xml");

3.通过SAXBuilder的Build方法将输入流加载到saxb中获取dom对象

Document doc = sb.build(in);

4.通过document对象获取xml文件的根结点

Element rootElement =doc.getRootElement();

5.获取根结点下的子节点的List集合

List<Element> bookList = rootElement.getChildren();

DOM4J方式:

1、创建一个 SAXReader 对象saxReader

SAXReader saxReader = new SAXReader();

2、通过saxReader的read方法加载
*.xml文件,获取docuemnt对象

Document document = saxReader.read(fileName);

3、通过 getRootElement() 获取根节点

Element rootElement = document.getRootElement();

4、通过 elementIterator() 获取子节点的迭代器

Iterator it = rootElement .elementIterator();

四种方式对比:

基础方法:DOM(平台无关的官方解析方式)、SAX(基于事件驱动的解析方式)
扩展方法:JDOM、DOM4J(在基础的方法上扩展出的,只有在java中能够使用的解析方法)

DOM:一次性将整个xml文件加载到内存中,形成DOM树
优点:形成了树结构,直观好理解,代码更容易编写
解析过程中树结构保留在内存中,方便修改
缺点:当xml文件较大时,对内存消耗比较大,容易影响解析性能并造成内存溢出
SAX:逐条语句判断解析
优点:采用事件驱动模式,对内存消耗比较小
适用于只需要处理xml中数据时
缺点:不易编码
很难同时访问同一个xml中的多处不同数据

JDOM:仅使用具体类而不使用接口
API大量使用了Collections类

DOM4J:JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能
DOM4J使用接口和抽象基本类方法,是一个优秀的Java XML API
具有性能优异、灵活性好、功能强大和极端易使用的特点
是一个开放源代码的软件

性能测试结果:几kB的xml文件;建议使用DOM4J解析
DOM-33ms
SAX-6ms
JDOM-69ms
DOM4J-45ms

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值