`
wj_126mail
  • 浏览: 130668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 解析 XML 再总结

阅读更多
关于用java 解析 XML,有四种方式,那用哪一种好呢? 咱们说说看吧。


1.解析XML的方式有两种, 一种是SAX ,一种是DOM,SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。

2.基于DOM的解析,解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。

3.基于SAX的解析,是事件驱动,解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小,适于Applet,下载。缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少;

4.基于DOM4J解析,DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。

5.基于JDOM解析,为减少DOM、SAX的编码量,出现了JDOM;优点:20-80原则,极大减少了代码量。使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。
分享到:
评论
4 楼 wj_126mail 2010-09-16  
SAX2继承了SAX1的所有功能,仍然采用事件流/调用流的构架,但是SAX2同SAX1最大的几个区别在于:
用XmlReader取代了Parser。
支持名空间(Namespace),这个特性是很多XML的高级功能所必须的,同时这个特性也导致了在SAX接口很多部分的变化。
使用feature(特性)和properties(属性)的方法来配置解析器的行为和获取参数。通过XmlReader.setFeature(String name, boolean value )可以设置XmlReader的行为,通过XmlReader.getFeature( String name)可以获取当前的行为特性;通过XmlReader.setProperty( String name, Object value)可以设置XmlReader的参数,通过XmlReader.getProperty(String name)可以获取XmlReader的参数。
提出了Filter(过滤器)的概念,在SAX里,一个从应用程序到SAX的请求流和一个从SAX到应用程序的事件流组成了整个地交互过程。但是在某些情况下,我们需要对流中运行的信息进行修改,例如剔除某些不需要的信息,修改某些信息从而简化处理过程等等,这时在流中的信息到达Handler之前进行过滤就成了理所当然的选择。于是SAX2提出了接口XmlFilter。
在了解进一步的知识之前,首先我们需要了解的是,SAX不是一个XML的解析器,而是提供了一个通用的接口,这个接口使各种XML的解析器可以相互转换。这些支持SAX解析器具有相同的方法,并且可以通过Java的系统设置进行配置。
3 楼 wj_126mail 2010-09-16  
SAX接口解析XML文件的基本原理为:首先获得一个实现了SAX接口的解析器,这个解析器通常是由第三方软件公司提供的;然后自己写一个符合SAX标准的处理器类,并且把这个类注册到刚刚做好的解析器;解析XML文件;解析器会把XML文件作为一个文件流读出来,然后再把文件流转换成一个事件流,这个事件流中的内容包括“文档开始”、“文档结束”、“元素开始”、“元素结束”等等标志文件状态的事件;根据事件调用注册到解析器里的处理器里面的相应的方法;在解析器进行XML文件的解析的同时,应用程序可以调用解析器提供的方法,对解析器的行为进行控制或获取解析器的状态。
2 楼 wj_126mail 2010-09-16  
另外,JDOM 和 DOM 在性能测试时表现不佳,在测试 10M 文档时内存溢出。在小文档情况下还值得考虑使用 DOM 和 JDOM。
1 楼 wj_126mail 2010-09-16  
上面说解析XML的方式有两种, 原因是因为JDOM 自身不包含解析器。它通常使用 SAX2 解析器来解析和验证输入 XML 文档(尽管它还可以将以前构造的 DOM 表示作为输入)。它包含一些转换器以将 JDOM 表示输出成 SAX2 事件流、DOM 模型或 XML 文本文档。JDOM 是在 Apache 许可证变体下发布的开放源码。

相关推荐

    rip宣告网段选择版本

    rip宣告网段选择版本

    基于springboot+vue的学生选课系统(Java毕业设计,附源码,部署教程).zip

    该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven

    基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码

    基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码,本资源中的源码都是经过本地编译过可运行的,评审分达到98分,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、期末大作业和课程设计使用需求,如果有需要的话可以放心下载使用。 基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码基于BP神经网络的电力负荷预测-基

    基于springboot+vue的常规应急物资管理系统(Java毕业设计,附源码,部署教程).zip

    该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven

    网站系统渗透测试报告.doc

    渗透测试报告模板,供大家参考如何写报告

    I型NPC三电平逆变器 仿真 有三相逆变器参数设计,SVPWM,直流均压控制,双闭环控制说明文档(可加好友另算) SVPWM调制 中点电位平衡控制,LCL型滤波器 直流电压1200V,交流侧输出线电

    I型NPC三电平逆变器 仿真 有三相逆变器参数设计,SVPWM,直流均压控制,双闭环控制说明文档(可加好友另算) SVPWM调制 中点电位平衡控制,LCL型滤波器 直流电压1200V,交流侧输出线电压有效值800V,波形标准,谐波含量低。 采用直流均压控制,中点电位平衡控制,直流侧支撑电容两端电压偏移在0.3V之内,性能优越。 参数均可自行调整,适用于所有参数条件下,可用于进一步开发

    燕山大学EDA综合实训实验报告.doc

    燕山大学EDA综合实训实验报告

    一个基于qt实现钩子屏蔽系统按键、任务管理器、任务栏实例

    qt 一个基于qt实现钩子屏蔽系统按键、任务管理器、任务栏实例. 一个基于qt实现钩子屏蔽系统按键、任务管理器、任务栏实例.

    headers-more-nginx-module-v0.34.tar.gz 下载 headers-more-nginx-module是Nginx的第三方模块,它提供了一些额外的功能,用于设置HTTP

    headers-more-nginx-module-v0.34.tar.gz 下载 headers-more-nginx-module是Nginx的第三方模块,它提供了一些额外的功能,用于设置HTTP

    牢大防火墙_牢大防火墙.apk

    牢大防火墙_牢大防火墙.apk

    半桥 全桥LLC仿真,谐振变器的四种基本控制方式 主要有 频率控制PFM PWM控制 移相控制PSM 混合控制PFM+PSM 运行环境有plecs matlab simulink

    半桥 全桥LLC仿真,谐振变器的四种基本控制方式。 主要有 频率控制PFM PWM控制 移相控制PSM 混合控制PFM+PSM 运行环境有plecs matlab simulink

    基于51单片机的密码锁设计proteus

    基于51单片机的密码锁设计proteus

    Yakit-1.0.12-sp7-windows-amd64.zip

    Yakit 是一个基于 Yak 语言开发的集成化安全能力平台,旨在为网络安全从业者提供一个易于使用的工具。它通过图形化用户界面(GUI)来操控 Yak 引擎的能力,使得用户无需编写代码即可利用 Yak 的强大安全功能

    里面是本人大学中所完成的 PPT

    里面是本人大学中所完成的 PPT

    【数字信号去噪】基于matlab ANC算法多通道主动噪声控制【含Matlab源码 9963期】.zip

    Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    Artwork Collect网站源代码压缩包

    Artwork Collect网站源代码压缩包

    基于springboot的点餐平台网站lw+ppt

    包含项目论文和毕业答辩PPT,详情请看博客:https://blog.csdn.net/2401_87429224/article/details/144995193 论文主要包括以下内容: 1、中英文摘要; 2、目录; 3、绪论,包括背景、意义、开发工具、国内外现状等; 4、系统分析,包括可行性分析、设计原则、需求分析、业务流程分析等; 5、系统设计,包括功能设计、数据库设计等; 6、系统实现,包括各模块实现; 7、软件测试,包括测试环境、测试条件、运行情况等。

    Android天气预报APP

    在Android平台上开发一款天气预报应用是一项常见的任务,它涉及到多个技术层面,包括用户界面设计、数据获取、数据解析以及实时更新等。以下是对这个"较简单的天气预报APP"可能涉及的关键知识点的详细解释: 1. **Android Studio**:作为Android应用开发的主要集成开发环境(IDE),Android Studio提供了丰富的工具来帮助开发者编写、调试和发布应用。它内置了Gradle构建系统,使得项目管理和依赖管理更加方便。 2. **布局设计**:UI设计是天气应用的重要部分,通常会使用XML布局文件来定义各个屏幕的组件和布局。例如,可能包含一个用于显示城市名的TextView,一个用于展示当前温度的ImageView,以及用于显示未来几天预报的RecyclerView。 3. **数据获取**:天气信息通常来自于网络API,如OpenWeatherMap或AccuWeather等。开发者需要编写HTTP请求代码,使用像OkHttp或者Retrofit这样的网络库来获。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    TCP/IP串口透传工具

    一款简单实用的TCP/IP串口透传工具

    基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip

    基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip,个人大三大作业设计项目、经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip基于python+opencv实现的柚子缺陷识别检测源码 (高分项目).zip

Global site tag (gtag.js) - Google Analytics