当前位置: 首页 > article >正文

XML解析

一、XML概述

1,什么是XML?

  • XML即为可扩展的标记语言(eXtensible Markup Language)
  • XML是一套定义语义标记的规则,这些标记将文档分为许多部件并对这些部件加以标识

2.XML和HTML不同之处

  • XML主要用于说明文档的主题,而HTML侧重描述文本的显示格式。
  • XML文档数据和格式分离,文档=文档数据+文档结构+文档样式

  • XML是一种元标记语言,用户可以自己定义标记集,从而使数据具有自我描述性,而HTML的标记是不能自己定制的。
  • XML支持Unicode字符集

3.Unicode:

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。

4.常用Unicode

  • UTF-8:以字节为单位对Unicode进行编码。
  • UTF-16:以16位无符号整数为单位。
  • GB2312:gb2312出现较早,一些汉字和繁体不支持。
  • GBK:95年重新修订了编码,命名为GBK1.0,共收录了21886个符号。
  • 之后又推出了GBK18030编码,共收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字,现在WINDOWS平台必需要支持GBK18030编码。

按照GBK18030、GBK、GB2312的顺序,3种编码是向下兼容,同一个汉字在三个编码方案中是相同的编码。

二、XML元素

1.规范的XML文档中关于元素的几条原则

  • 文档要包含一个或多个元素
  • 根元素(文档元素)唯一,且其无任何部分出现在其它元素中
  • 元素必须被正确关闭
  • 元素不得交叉
  • 属性值必须加引号(单引、双引均可)

2.树型组织结构

  • 父元素
  • 子元素

三、XML与HTML标签对比

1.xml标签区分大小写(开始标签和结束标签大小必须一致)<tr></tr>

html标签不区分大小写<tr></TR>

2.xml中空元素标签必须被关闭<br/>

html中空元素标签可以不被关闭<br>

3.xml所有标签必须严格嵌套<b><i></i></b>

html不一定严格嵌套<b><i></b></i>

4.xml所有标签中的属性值字符必须加(“ ”)或(‘ ’),包括属性值为数字时<student tel='0108888888'/>(内容有双引号使用(‘ ’),内容有单引号使用(“ ”))

html属性值不一定用引号括起来<hr color=blue>

5.xml只能有一个根元素

html可以有多个根元素

四、逻辑结构——XML文档结构

XML文档的构成:

一个格式良好的XML文档要包含三个部分:

  • XML声明
  • 处理指令(可选)
  • XML元素

五、XML解析

1.将XML数据从其序列化字符串格式转换为分层格式,获取对应信息的过程

2.语言无关性

3.常用的四种解析方式

  • DOM
  • SAX
  • JDOM
  • DOM4J

六、DOM解析

1.优点

  • 允许应用程序对数据和结构做出更改
  • 访问是双向的,可以在任何时候在树中上下导航,获取和操作任意部分的数据

2.缺点

  • 通常需要加载整个XML文档来构造层次结构,消耗资源大

七、SAX解析

1.SAX处理的优点非常类似于流媒体的优点,事件驱动

2.优点

  • 不需要等待所有数据都被处理,分析就能立即开始
  • 只在读取数据时检查数据,不需要保存在内存中
  • 可以在某个条件得到满足时停止解析,不必解析整个文档
  • 效率和性能较高,能解析大于系统内存的文档

3.缺点

  • 需要应用程序自己负责TAG的处理逻辑(例如维护父/子关系等),文档越复杂程序就越复杂
  • 单向导航,无法定位文档层次,很难同时访问同意文档的不同部分数据
  • 无状态性,事件过后查询内容不会自动保存

八、JDOM解析

1.优点

  • 使用具体类而不是接口,简化了DOM的API
  • 大量使用了Java集合类,方便了Java开发人员

2.缺点

  • 没有较好的灵活性
  • 性能较差

九、DOM4J解析

1.优点

  • 大量使用了Java集合类,方便Java开发人员,同时提供一些提高性能的替代方法
  • 支持XPath

有很好的性能

2.缺点

  • 大量使用了接口,API较为复杂

3.常用类

Document——表示整个XML文档。文档Document对象是通常被称为DOM树。

Element——表示一个XML元素。Element对象有方法来操作其子元素。它的文本,属性和名称空间。

Atttribute——表示元素的属性。属性有方法来获取和设置属性的值。它有父节点和属性类型。

Node——代表元素,属性或处理指令

4.常用方法

  • SAXReader.read(xmlSource)()-构建XML源的DOM4J文档。
  • Document.getRootElement()-得到的XML的根元素。
  • Element.node(index)-获得在元素特定索引XML节点。
  • Element.attributes()-获取一个元素的所有属性。
  • Node.value0f(@Name)-得到元件的给定名称的属性的值。

5.文档读取

SAXReader reader=new SAXReader();

Document document=reader.read(new File(fileName));

6.获取根节点

root=document.getRootElement();

7.遍历节点

for(Iterator i=root.elementIterator();i.hasNext();) 

Element element=(Element) i.next();

8.创建xml文档

Document document =DocumentHelper.createDocument();

Element root =document.addElement(" root" );                                                                                         
9.添加元素
Element author2 = root.addElement("student")
                                 .addAttribute( "name","yaoming”)
                                 .addAttribute(“age","20")
                                 .addText("He is a boy");


10.I/0流生成xml文档
FileWriter fileWiter =new FileWriter(“XXX.xml"))
XMLWriter writer =new XMLWriter(fileWriter);
writer.write( document);


http://www.kler.cn/a/460926.html

相关文章:

  • h5页面在安卓手机被软键盘弹起引起的bug
  • 直观解读 JuiceFS 的数据和元数据设计(一)
  • 2024/12/29 黄冈师范学院计算机学院网络工程《路由期末复习作业一》
  • ELK入门教程(超详细)
  • 《经典力学》笔记
  • 【ArcGISPro/GeoScenePro】检查并处理高程数据
  • FreeRTOS: 中断服务例程 Interrupt Service Routine, ISR
  • 架构师之路--达梦数据库事务控制详解
  • Rust windows 环境的安装
  • 如何实现企业精准定位?解锁高效传播的新路径,媒介盒子分享
  • 高防服务器在网络游戏中起着哪些作用?
  • 滴滴Java开发面试题及参考答案 (上)
  • Fama MacBeth两步法与多因子模型的回归检验
  • iOS 18手机不越狱玩MC java版---PojavLauncher
  • 【玩转23种Java设计模式】行为型模式篇:备忘录模式
  • 26. 机器人走迷宫
  • 条款42:了解 typename 的双重含义(Understand the two meanings of typename)
  • 条款43:学习处理模板化基类内的名称(Know how to access names in templatized base classes)
  • Java中如何实现线程安全的单例模式?
  • raspberrypi-kernel
  • Ps:将数据组作为文件导出
  • RabbitMQ实现生产者消费者
  • 使用react和redux构建一个简单的计数器
  • RP2040 C SDK I2C外设使用
  • Docker容器镜像制作
  • 正则表达式介绍和python中的简单使用