java高级特性之xml
xsobi 2025-01-11 18:15 1 浏览
xml是java开发中不可或缺的,像spring系列框架都会用到,本文就整理了xml的知识,本文文字较多,希望大家耐心看完,整理不易,多多支持!
一、XML概述
XML是可扩展标记语言,是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,是W3C的推荐标准格式,XML被设计为具有自我描述性,专门用来存储和传递数据的。本教程让您掌握好XML的创建,写入,解析,保存等操作。下面将重点讲解Java XML所包含的内容。
XML 实例
XML 文档第一行以 XML 声明开始,用来表述文档的一些信息,如:
xml version="1.0" encoding="UTF-8"?>
XML 文档实例
XML命名规则
1.名称可以包含字母、数字以及其他的字符
2.名称不能以数字或者标点符号开始
3.名称不能以字母 xml(或者 XML、Xml 等等)开始
4.名称不能包含空格
5.使具有描述性,简短和简单的命名
XML 和 HTML 之间的差异
有些读者发现xml和html有些相似,这里就说一下它们的差异
XML 不是 HTML 的替代。
XML 和 HTML 为不同的目的而设计:
1.XML 被设计用来传输和存储数据,其焦点是数据的内容。
2.HTML 被设计用来显示数据,其焦点是数据的外观;HTML 旨在显示信息,而 XML 旨在传输信息。
XML 用途
XML 把数据从 HTML 分离
如果需要在html文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑html。
通过 XML,数据能够存储在独立的 XML 文件中。这样就可以专注于使用 HTML/CSS 进行显示和布局,并确保修改底层数据不再需要对 HTML 进行任何的改变。
通过使用几行 JavaScript 代码,您就可以读取一个外部 XML 文件,并更新您的网页的数据内容
XML 简化数据传输
对开发人员来说,其中一项最费时的挑战一直是在互联网上的不兼容系统之间交换数据。
由于可以通过各种不兼容的应用程序来读取数据,以 XML 交换数据降低了这种复杂性
二、xml的四种解析方式
一个XML文档的生命周期应该包括两部分:1.解析文档,2.操作文档数据。
那么我们就来介绍如何来解析 XML以及解析之后如何使用 。
解析 XML 文件一般来说有两种底层形式,一种是基于树的结构来解析的称为DOM;另一种是基于事件流的形式称为Sax。而在这两种解析方式的基础上,基于底层api的更高级封装解析器也应用而生,比如面向Java的 JDom和 Dom4J。
1.DOM
DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。是基于树形结构的 XML 解析方式,它会将整个 XML 文档读入内存并构建一个 DOM 树,基于这棵树形结构对各个节点(Node)进行操作。
优点:
1.形成了树结构,直观易于理解,代码更易编写。
2.解析过程中树结构保存在内存中,方便修改
缺点:
1.当XML文件较大的时候,最内存耗费比较大,容易影响解析性能并且可能会造成内存溢出。
适用于:文档较小,且需要修改文档内容
2.Sax
SAX处理的特点是基于事件流的。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。sax分析器在对xml文档进行分析时,触发一系列的事件,应用程序通过事件处理函数实现对xml文档的访问,因为事件触发是有时序性的,所以sax分析器提供的是一种对xml文档的顺序访问机制,对于已经分析过的部分,不能再重新倒回去处理.此外,它也不能同时访问处理2个tag,sax分析器在实现时,只是顺序地检查xml文档中的字节流,判断当前字节是xml语法中的哪一部分,检查是否符合xml语法并且触发相应的事件.对于事件处理函数的本身,要由应用程序自己来实现. SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。
优点:
1.不需要等待所有数据都被处理,分析就能立即开始。 2.只在读取数据时检查数据,不需要保存在内存中。 3.可以在某个条件得到满足时停止解析,不必解析整个文档。
4.效率和性能较高,能解决大于系统内存的文档。
缺点:
1.需要应用程序自己负责TAG的处理逻辑(例如维护父子关系等),文档越复杂程序就越复杂,即不易编码。
2.单向导航,很难同时访问同一个XML中的多处不同数据
适用于:文档较大,只需要读取文档数据。
3.JDOM
JDOM是处理xml的纯java api.使用具体类而不是接口。JDOM具有树的遍历,又有SAX的java规则。
JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。
JDOM自身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档。它包含一些转换器以将JDOM表示输出成SAX2事件流、DOM模型或XML文本文档。JDOM是在Apache许可证变体下发布的开放源码。
优点:
1.使用具体类而不是接口,简化了DOM的API。
2.大量使用了Java集合(Collections)类,方便了Java开发人员。
缺点:
1.没有较好的灵活性。
2.性能较差。
4.DOM4J
虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath,支持XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能。从2000下半年开始,它就一直处于开发之中。
为支持所有这些功能,DOM4J使用接口和抽象基本类方法。DOM4J大量使用了API中的Collections类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然DOM4J付出了更复杂的API的代价,但是它提供了比JDOM大得多的灵活性。
在添加灵活性、XPath集成和对大文档处理的目标时,DOM4J的目标与JDOM是一样的:针对Java开发者的易用性和直观操作。它还致力于成为比JDOM更完整的解决方案,实现在本质上处理所有Java/XML问题的目标。在完成该目标时,它比JDOM更少强调防止不正确的应用程序行为。
DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun的JAXM也在用DOM4J。
优点:
1.大量使用了Java集合类,方便Java开发人员,同时提供一些提高性能的替代方法。
2.支持XPath。查找节点特别快
3.灵活性高。
缺点:
1.大量的使用了接口,API复杂,理解难。
2.移植性差。
注:XPath是一门在 XML 文档中查找信息的语言。
5.综合比较
1.DOM4J的性能最好,Sun公司的JAXM也在用DOM4J,目前许多开源项目中大量采用DOM4J,例如Hibernate也在使用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J。
2.JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM。虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准Java模型相对),所以在某些类型的项目中可能也需要它,如在JavaScript中使用DOM。
3.SAX表现较好,这要依赖于它特定的解析方式—事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然XML流被读入时,会有部分文档暂时隐藏在内存中)。
4.如果XML文档较大且不考虑移植性问题时可采用DOM4J;如果XML文档较小则可以使用JDOM;如果需要及时处理而不需要保存数据则可以考虑SAX。
星辰大海,永不止步
END
耐心看完的读者,是对我对大的关爱,谢谢大家!
- 上一篇:关于XML那些事
- 下一篇:从根本上理解 JSON 和 XML 的区别
相关推荐
- bootstrap入门
-
bootstrap是一个前端ui框架,它把我们网页开发常用的功能都写好了,我们使用它可以像搭积木一样的轻松的开发网站,不过现在都流行前后端分析了,而且layui也比较好用,个人觉得无论哪个ui框架,我...
- BootStrap简介及应用要点
-
BootStrap简介BootStrap是基于HTML、CSS和JavaScript的框架,使你只需要写简单的代码就可以很快的搭建一个还不错的前端框架,他是后端程序员的福音,使它们只需要专注业务逻辑,...
- 如何在Bootstrap Studio中使用图标字体?
-
BootstrapStudioforMac是一款网站设计制作工具,图标字体类似于普通的Web字体,但是它们包含矢量形状,而不是字母和数字。那么如何在BootstrapStudio中使用图标字体...
- Bootstrap5.0-全球流行的前端开源UI工具包迎来了大版本更新
-
Bootstrap5.0正式发布了,带来了很多亮点,还学得动吗?Bootstrap介绍...
- BootstrapBlazor 模板适配移动设备使用笔记
-
项目模板BootstrapBlazorApp模板为了方便大家利用这套组件快速搭建项目,作者制作了项目模板(ProjectTemplates),使用dotnetnew命令行模式,使用步骤...
- bootstrap的tab标签页的使用
-
标签tab页在,当前的web中应用十分广泛,君不见,在博客的右侧出现的最新文章和随机文章中有它的身影,在大型门户网站中也有它的身影,可以说其无处不在的刷着存在感。既然其如此嚣张的存在,我们没有理由不应...
- 使用 Bootstrap 的最简单方法 - 让你的 HTML 看起来赏心悦目
-
什么是BootstrapBootstrap是一个免费的开源CSS框架,使得前端Web开发变得更加简单。...
- Bootstrap-table 使用总结
-
一、什么是Bootstrap-table?在业务系统开发中,对表格记录的查询、分页、排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这...
- 建议收藏:哪些电子发票有XML格式?
-
报销时,财务要求提供发票XML格式。但不是所有的电子发票都有哦,目前只有数电发票(全面数字化的电子发票)有XML格式!目前的数电发票有下面这几大类:1、电子发票(增值税专用发票):适用于增值税一般纳税...
- Mybatis中mapper的xml解析详解
-
上一篇文章分析了mapper注解关键类MapperAnnotationBuilder,今天来看mapper的项目了解析关键类XMLMapperBuilder。基础介绍回顾下之前是在分析configur...
- word修改文中任意一处文字,其他地方相同的内容自动修改
-
我们工作写方案处理word的时候,经常会遇到这么一种情况,即文中存在多处相同的文字内容,可能是词语,也可能是段落。当我们修改了其中一处后,其他地方还得手动修改,十分不便。今天给大家分享一下,在word...
- 第9天 | 鸿蒙App开发实战,XML创建布局,共性很重要
-
XML声明布局的方式更加简便直观,是开发App的核心内容之一,咱们完全有必要搞清楚。每一个Component和ComponentContainer对象大部分属性都支持在XML中进行设置,它们有各自的X...
- 可扩展标记语言格式XML
-
1,XML(eXtensibleMarkupLanguage):指可扩展标记语言,一种数据表示格式,被设计用来传输和存储数据,不用于表现和展示数据。2,XML和基于XML的语言的整个结构是...
- 比较一下JSON与XML两种数据格式?
-
JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...
- PROFINET工业以太网教程(16)-GSDML文件详解
-
前面的文章(PROFINET工业以太网教程(10)——GSD文件)我们介绍过GSD文件,它的全称是“GeneralStationDescription”,中文翻译为“通用站描述文件”。GSD文件的...
- 一周热门
- 最近发表
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- dedecms模版 (53)
- c 视频教程下载 (33)
- listview排序 (33)
- firebug 使用 (31)
- characterencodingfilter (33)
- getmonth (34)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)
- android studio 3 0 (34)
- android应用开发 (31)
- html转js (35)
- 索引的作用 (33)
- checkedlistbox (34)
- localhost 8080 (32)
- 多态 (32)
- xmlhttp (35)
- mysql更改密码 (34)