zoukankan      html  css  js  c++  java
  • xml解析

    目前正在学习xml,在网上搜集了不少资料,整理了下发了出来,希望有IT前辈指点一下,谢谢!

    一、xml是什么意思?

    所谓xml:Extensible Markup Language,即可扩展标记语言. 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。非常适合Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据.

    二、XML的解析

    解析XML文件的方法方法:
    1、jdk/jdom
    2、sax解析 (由上往下解析)
    3、dom4j解析 (由外到内解析)

    补充:
    DOM由节点组成
    Node
    元素节点
    属性节点
    文本节点

    对XML中的解析主要的是对每个元素节点的分析:

    1、document.selectNodes(xpath);//查一组

    2、document.selectSingleNode(xpath);//查单个

    三、xml解析介绍

    1.Dom解析

    ·DOM(Document Object Model) 是一种用于XML文档的对象模型,可用于直接访问 XML 文档的各个部分。它是一次性全部将内容加载在内存中,生成一个树状结构,它没有涉及回调和复杂的状态管理。缺点是加载大文档时效率低下。

    ·常用方法:

    1.Document:getElementsByTagName(节点名称); -->根据节点名称获取列表
    2.Nodelist:getChildNodes(); -->获取当前节点所有子节点
    3.getAttributes(); -->获取当前节点所有属性和值
    4.getNodeValues(); -->获取当前节点的值
    5.getTextContent(); -->获取当前节点的文本
    6.getNodeName(); -->获取当前节点名称

    2.SAX解析
    SAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相关信息。它是一种以事件为驱动的XML API,解析速度快,占用内存少。使用回调函数来实现。缺点是不能倒退。
    用法:
    (1)自定义类继承DefaultHandler并重写四个方法
    (2)获取SAX工厂 SAXParserFactory factory = SAXParserFactory.newInstance();
    (3)获取解析器 SAXParser saxParser = factory.newSAXParser();
    (4)设置解析 saxParser.parse(is,myHanlder);

    3.Pull解析
    Pull 内置于 Android 系统中。也是官方解析布局文件所使用的方式。Pull 与 SAX 有点类似,都提供了类似的事件,如开始元素和结束元素。
    不同的是,SAX 的事件驱动是回调相应方法,需要提供回调的方法,而后在 SAX 内部自动调用相应的方法。
    而Pull解析器并没有强制要求提供触发的方法。因为他触发的事件不是一个方法,而是一个数字。它使用方便,效率高
    常用方法:
    (1) getEventType(); -->获取当前时间类型
    (2) getAttributeValues(); -->获取标签属性
    (3) next(); -->移动至下一个时间的类型
    (4) nextText(); -->获取标签值
    (5) setInput(); -->设置解析

    四、xml优缺点

    一、DOM解析

      DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。

      DOM接口提供了一种通过分层对象模型来访问XML文档信息的方式,这些分层对象模型依据XML的文档结构形成了一棵节点树。无论XML文档中所描述的是什么类型的信息,即便是制表数据、项目列表或一个文档,利用DOM所生成的模型都是节点树的形式。也就是说,DOM强制使用树模型来访问XML文档中的信息。由于XML本质上就是一种分层结构,所以这种描述方法是相当有效的。

      DOM树所提供的随机访问方式给应用程序的开发带来了很大的灵活性,它可以任意地控制整个XML文档中的内容。然而,由于DOM分析器把整个XML文档转化成DOM树放在了内存中,因此,当文档比较大或者结构比较复杂时,对内存的需求就比较高。而且,对于结构复杂的树的遍历也是一项耗时的操作。所以,DOM分析器对机器性能的要求比较高,实现效率不十分理想。不过,由于DOM分析器所采用的树结构的思想与XML文档的结构相吻合,同时鉴于随机访问所带来的方便,因此,DOM分析器还是有很广泛的使用价值的。

        优点:

          1、形成了树结构,有助于更好的理解、掌握,且代码容易编写。

          2、解析过程中,树结构保存在内存中,方便修改。

        缺点:

          1、由于文件是一次性读取,所以对内存的耗费比较大。

          2、如果XML文件比较大,容易影响解析性能且可能会造成内存溢出。


    因为是在网上找的资料,也是第一次发博客,希望可以得到各位前辈指点!

  • 相关阅读:
    codeAnalyze_函数赋值给另一个函数的形参
    js_new关键字创建对象的五个步骤
    codeRecord_bind
    js_活动对象与变量对象的区别
    将linux的随机ip固定为设置的固定ip
    Springcloud总结
    Jackson的使用
    Lucene的初步了解和学习
    Shiro安全框架
    关于xpath中的tbody
  • 原文地址:https://www.cnblogs.com/Cavalry-/p/11176128.html
Copyright © 2011-2022 走看看