一、XML概念和体系
XML: 可扩展标记语言(EXtensible Markup Language)。没有预定义标签,需要自行定义标签;用于数据存储和数据传输。与HTML的差别:XML 主要作用是数据存储和传输(传输),HTML 主要作用是用来显示数据(显示)。
特点:
XML 数据以纯文本格式存储
实现不同应用程序之间的数据通信
实现不同平台间的数据通信
实现不同平台间的数据共享
使用 XML 将不同的程序、不同的平台之间联系起来
二、XML基本语法
基本语法:
- 有且只有一个根元素
- XML 文档声明必须放在文档的第一行
- 所有标签必须成对出现
- XML 的标签严格区分大小写
- XML 必须正确嵌套
- XML 中的属性值必须加引号
- XML 中,一些特殊字符需要使用“实体”
- XML 中可以应用适当的注释
XML元素: XML 元素指的是开始标签到结束标签的部分一个元素中可以包含(1) 其他元素(2) 文本(3) 属性(4) 以上的混合
命名规则: (1)名称可以包含字母、数字及其他字符(2)名称不能以数字或者标点符号开始(3) 名称不能以字母 xml 开始(4)名称不能包含空
XML代码案例:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="1001">
<name>java开发实战</name>
<author>张三</author>
<price>98.5</price>
</book>
<book id="1002">
<name>mysql深入浅出</name>
<author>王一一</author>
<price>89.7</price>
</book>
</books>
三、数据解析:
3.1DOM解析
特点:形成了树结构,有助于更好的理解、掌握,且代码容易编写;解析过程中,树结构保存在内存中,方便修改。(JAVA官方提供)
解析步骤:
- 创建一个 DocumentBuilderFactory 的对象
- 创建一个 DocumentBuilder 对象
- 通过 DocumentBuilder 的 parse(…)方法得到 Document 对象
- 通过 getElementsByTagName(…)方法获取到节点的列表
- 通过 for 循环遍历每一个节点
- 得到每个节点的属性和属性值
- 得到每个节点的节点名和节点值
3.2SAX解析
特点:采用事件驱动模式,对内存耗费比较小;适用于只处理 XML 文件中的数据。(JAVA官方提供)
解析步骤:
- 创建 SAXParserFactory 的对象
- 创建 SAXParser 对象 (解析器)
- 创建一个 DefaultHandler 的子类
- 调用 parse() 方法
3.3JDOM解析
特点:仅使用具体类,而不使用接口;API 大量使用了 Collections 类。(第三方提供)
解析步骤:
- 创建一个 SAXBuilder 对象
- 调用 build 方法,得到 Document 对象(通过 IO 流)
- 获取根节点
- 获取根节点的直接子节点的集合
- 遍历集合
3.4DOM4J解析
特点:JDOM 的一种智能分支,它合并了许多超出基本 XML 文档表
示的功能;它使用接口和抽象基本类方法;具有性能优异、灵活性好、功能强大和极端易用的特点;是一个开放源码的文件。(第三方提供)
解析步骤:
- 创建 SAXReader 对象
- 调用 read 方法
- 获取根元素
- 通过迭代器遍历直接节点