XML已经成为一种非常通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。

诸多web应用框架,其可配置的编程方式,给我们的开发带来了非常大程度的便捷,但细细想来,它们的应用无一不是java
bean与xml之间的转换解析。本文将对xml的两种操作标准DOM和SAX,从它们各自的特点、适用范围等方面进行简介。

DOM (Document Object Model) :DOM标准中,採用W3C标准表示XML,有多重语言支持。因此其跨平台性非常好。

採用DOM规范处理xml时,会把xml文件总体载入进内存中,并在内存中建立对象树。对象树表示为Document对象,xml文件的根节点相应对象树的根节点。依次往下排列。由于整个xml文件被载入至内存中,所以基于DOM的处理对server内存要求比較高。可是正由于整个文件被载入,所以对文件本身的操作速度会比較快。注意这里所说的是文件本身,即文件被载入后的处理,比方对文件内部元素的遍历。但当文件本身非常大时。由于载入速度及对内存的占用影响,因此从总体而言。其效率不一定好。

适用范围:小型 XML 文件解析、须要全解析或者大部分解析 XML、须要改动 XML 树内容以生成自己的对象模型

使用DOM解析xml文件的步骤:

1.获取DocumentBuilderFactory对象。

2.使用DocumentBuilderFactory对象生成DocumentBuilder对象。

3.使用DocumentBuilder对象解析xml文件得到Document对象。

4.从Document对象获得xml文件根节点。

5.通过Node节点出发获得文档信息。

SAX (Simple API for XML) :SAX规范把xml文件作为数据流来处理的,读取一部分数据。处理一部分数据,它不须要将整个文件载入进内存。因此它非常好的攻克了DOM解析中资源占用的问题。SAX规范是基于事件驱动的。将XML数据文件里的不同内容归纳为不同的对象,解析不同对象时会产生不同事件,进而调用不同事件处理器。比方在開始解析文件时会产生文件解析事件,调用startDocument事件处理器;当读取节点的时候会产生開始元素事件,调用startElement事件处理器。相同。当读取节点内容、节点解析结束、文件解析结束时,会产生相应事件,调用相应的文件处理器进行处理。

适用范围:大型 XML 文件解析、仅仅须要部分解析或者仅仅想取得部分 XML 树内容、有 XPath 查询需求、有自己生成特定 XML 树对象模型的需求

使用SAX方式解析xml文档的步骤:

1.获取SAXParserFactory对象;

2.使用SAXParserFactory对象生成SAXParser。

3.调用SAXParser对象的parser方法对xml解析,然后获取解析结果。

java基础之概谈xml文件解析的更多相关文章

  1. android基础知识13:AndroidManifest.xml文件解析

    注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  2. JAVA中通过Jaxp操作XML文件基础

    Java中有多种方式操作XML文件,目前讲一讲以SUN公司提供的DocumentBuilderFactory工厂类对象操作XML. 使用XML基本操作就是需要CRUD(增删改查),那么首先通过一个查询 ...

  3. 通过正则表达式实现简单xml文件解析

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

  4. Android之AndroidManifest.xml文件解析

    转自:Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文 ...

  5. 9.XML文件解析

    一.XML简介 XML(EXtensible Markup Language),可扩展标记语言 特点:XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用:数据交互 配置应用程序 ...

  6. XML文件解析之JDOM解析

    1.JDOM介绍 JDOM的官方网站是http://www.jdom.org/,JDOM解析用到的jar包可以在http://www.jdom.org/dist/binary/中下载,最新的JDOM2 ...

  7. 使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置

    1.使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置 2.上代码:在resources目录下新建:generatorConfiguration.xml文 ...

  8. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

  9. Python实现XML文件解析

    1. XML简介 XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据,已经日趋成为当前许多新生技术的核心,在不同的领域都有着不同的应用.它是web ...

随机推荐

  1. hdu6040

    hdu6040 题意 将一个函数运行 n 次,一共得到 n 个值,有 m 次询问,每次询问第 k 小的值. 分析 考察了 \(nth\_element\) 函数的运用.\(nth\_element(a ...

  2. idea点击RUN启动报错: Broken configuration due to unavailable plugin or invalid configuration dat

    今天照常打开idea,突然发现之前的启动配置出问题了,随后报了一个这个错: Run Configuration Error: Broken configuration due to unavailab ...

  3. hdu 1556 Color the ball 线段树

    题目链接:HDU - 1556 N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气 ...

  4. 博客 | 基于Travis CI实现Hexo在Github和Coding的同步自动化部署

    文章目录 完成Hexo主题安装和配置 基于Travis CI实现同步部署 参考内容 相关链接 待补充 完成Hexo主题安装和配置 如果您还没有安装Hexo环境,请参考Hexo文档安装,也给出这样两篇博 ...

  5. zend studio9.0.3破解及汉化 windons版

    注册码: 34E606CF10C3E4CF202ABCEAA9B0B7A64DD2C5862A514B944AAAB38E3EB8A5F2CD735A2AB4CF9B952590EFA62BA0AB2 ...

  6. 线程同步-CountDownLatch

    应用场景: 有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以继续往下执行. 假如我们这个想要继续往下执行的任务调用一个CountDownLatch对象的await()方法,其他的任务执行 ...

  7. Introduction to the TestFlight SDK

    https://developer.apple.com/testflight/ When you want to test an app on your device, usually you plu ...

  8. 机器学习算法实践:朴素贝叶斯 (Naive Bayes)(转载)

    前言 上一篇<机器学习算法实践:决策树 (Decision Tree)>总结了决策树的实现,本文中我将一步步实现一个朴素贝叶斯分类器,并采用SMS垃圾短信语料库中的数据进行模型训练,对垃圾 ...

  9. 使用ffmpeg截取视频封面并批量上传

    需求:将视频文件压入zip包,然后上传服务器.服务器对zip解压,使用bat/shell,使用ffmpeg对视频进行封面截取.再使用OSS对视频和封面进行批量上传.最后将信息存入数据库 遇到的问题 1 ...

  10. 【重点突破】—— Nodejs+Express+MongoDB的使用基础

    前言:最近学习vue和react的高阶项目,都需要和Nodejs+Express+MongoDB结合实现全栈开发.这里结合实例Demo和所学项目集中总结一下这部分服务端的基础知识. 一.Express ...