![3d0d34084afa79f7a7630a678e264d5a.png](https://i-blog.csdnimg.cn/blog_migrate/894adf10c9b862a0fca781eb9e32f89b.jpeg)
XML的特点
XML 指可扩展标记语言(eXtensibleMarkupLanguage)
- XML 数据以纯文本格式存储
- 实现不同应用程序之间的数据通信
- 实现不同平台间的数据通信
- 实现不同平台间的数据共享
- 使用 XML 将不同的程序、不同的平台之间联系起来
XML的基本语法
1) 有且只有一个根元素
2) XML 文档声明必须放在文档的第一行
3) 所有标签必须成对出现
4) XML 的标签严格区分大小写
5) XML 必须正确嵌套
6) XML 中的属性值必须加引号
7) XML 中,一些特殊字符需要使用“实体”
8) XML 中可以应用适当的注释
XML的命名规则
1) 名称可以包含字母、数字及其他字符
2) 名称不能以数字或者标点符号开始
3) 名称不能以字母 xml 开始
4) 名称不能包含空格
DTD验证
DTD验证是文档类型定义,验证是否是“有效”的XML
局限性:
1. DTD不遵循XML语法
2. DTD数据类型有限
3. DTD不可扩展
4. DTD不支持命名空间
Schema技术
Schema是DTD的代替者,名称为XML Schema,用于描述XML文档结构,比DTD更加强大。最主要的特征之一就是XML Schema支持数据类型
1) Schema 是用 XML 验证 XML 遵循 XML 的语法
2) Schema 可以用能处理 XML 文档的工具处理
3) Schema 大大扩充了数据类型,而且还可以自定义数据类型
4) Schema 支持元素的继承
5) Schema 支持属性组
使用Schema验证XML文档步骤:
1. 创建SchemaFactory工厂
2. 建立验证文件对象
3. 利用SchemaFactory工厂对象,接收验证是文件对象,生成Schema对象
4. 产生对此schema的验证器
5. 要验证的数据
6. 开始验证
解析XML文件的方式
- DOM方式解析XML数据
- SAX方式解析XML数据
- JDOM方式解析XML数据
- DOM4J方式解析XML数据
DOM解析XML的步骤
1) 创建一个 DocumentBuilderFactory 的对象
2) 创建一个 DocumentBuilder 对象
3) 通过DocumentBuilder的parse(...)方法得到Document对象
4) 通过 getElementsByTagName(...)方法获取到节点的列表
5) 通过 for 循环遍历每一个节点
6) 得到每个节点的属性和属性值
7) 得到每个节点的节点名和节点值
package
SAX方式解析XML数据
SAX,全称 Simple API for XML,是一种以事件驱动的XMl API,SAX 与 DOM 不同的是它边扫描边解析,自顶向下依次解析,由于边扫描边解析,所以它解析 XML 具有速度
快,占用内存少的优点
SAX解析XML的步骤:
1) 创建 SAXParserFactory 的对象
2) 创建 SAXParser 对象 (解析器)
3) 创建一个 DefaultHandler 的子类
4) 调用 parse 方法
package
package
JDOM解析XML数据
JDOM是一种解析XML的Java工具包,它基于树型结构,利用纯Java的技术对XML文档实现解析。所以中适合于Java语言
JDOM解析XML的步骤:
1) 创建一个 SAXBuilder 对象
2) 调用 build 方法,得到 Document 对象(通过 IO 流)
3) 获取根节点
4) 获取根节点的直接子节点的集合
5) 遍历集合
public
DOM4J解析XML数据
DOM4J 是一个 Java 的 XML API,是 JDOM 的升级品,用来读写 XML 文件的
DOM4J解析XML数据步骤:
1) 创建 SAXReader 对象
2) 调用 read 方法
3) 获取根元素
4) 通过迭代器遍历直接节点
public
四种解析XML技术的特点
1)DOM 解析:
形成了树结构,有助于更好的理解、掌握,且代码容易编写。解析过程中,树结构保存在内存中,方便修改。
2)SAX 解析:
采用事件驱动模式,对内存耗费比较小。适用于只处理 XML 文件中的数据时
3)JDOM 解析:
仅使用具体类,而不使用接口。API 大量使用了 Collections 类。
4)DOM4J 解析:
JDOM 的一种智能分支,它合并了许多超出基本 XML 文档表示的功能。
它使用接口和抽象基本类方法。具有性能优异、灵活性好、功能强大和极端易用的特点。是一个开放源码的文件