XML文档
1.XML概念
XML 指可扩展标记语言(EXtensible Markup Language)
XML 没有预定义标签,需要自行定义标签。
2.作用:
数据存储和数据传输
3.XML的特点 :
XML 数据以纯文本格式存储
实现不同应用程序之间的数据通信
实现不同平台间的数据通信
实现不同平台间的数据共享
使用XML 将不同的程序、不同的平台之间联系起来
4.XML和 HTML之间的差异 :
XML 主要作用是数据存储和传输(传输)
HTML 主要作用是用来显示数据(显示)
5.标准的XML:唯一的根元素,和根元素的子元素,元素的属性,元素的名称,元素的文本
.6.XML文件的体系:
1)XHTML 可扩展标识语言
2)WSDL Web Services Description Language 网络服务描述语言,这种文档可描述某个Web service
3)3) WAP 和 WML 手持设备的标记语言
4) RSS(广泛用于网上新闻频道) :Really SimpleSyndication 简易信息聚合,使用 RSS 订阅能更快地获取信息,网站提供 RSS 输出,有利于让用户获取网站内容的最新更新
5) RDF 和 OWL: 重要的语义网技术语义网是为资产管理、企业整合及网络数据的共享和重用提供的一个框架。
6) SMIL 同步多媒体集成语言,它是由万维网联盟规定的多媒体操纵语言。最新的 SMIL 版本是 2001年 8月推出的SMIL 2.0版本,它通过时序排列对声音、影像、文字及图形文件进行顺序安排,然后将这些媒体表现看起来是同步的
XML代码:
XML基本语法:
1) 有且只有一个根元素
2) XML 文档声明必须放在文档的第一行
3) 所有标签必须成对出现
4) XML 的标签严格区分大小写
5) XML 必须正确嵌套
6) XML 中的属性值必须加引号
7) XML 中,一些特殊字符需要使用“实体”
8) XML 中可以应用适当的注释
在 XML 中,有 5 个预定义的实体引用:
<<小于
>>大于
&&和号
''单引号
""引号
XML元素指的是开始标签到结束标签的部分
一个元素中可以包含
1) 其他元素 2) 文本 3) 属性 4) 以上的混合
XML命名规则
1) 名称可以包含字母、数字及其他字符
2) 名称不能以数字或者标点符号开始
3) 名称不能以字母xml开始
4) 名称不能包含空格
Schema技术
1DTD 验证:
概念:DTD 文档类型定义
作用:验证是否是“有效”的XML
DTD代码:
2.使用 DTD 的局限性
1) DTD 不遵守XML 语法
2) DTD 数据类型有限
3) DTD 不可扩展
4) DTD 不支持命名空间
3.Schema 技术:
Schema是 DTD 的代替者,名称为XML Schema,用于描述XML 文档结构,比DTD 更加强大,最主要的特征之一就是XML Schema支持数据类型
1) Schema是用XML 验证XML 遵循XML 的语法
2) Schema可以用能处理XML 文档的工具处理
3) Schema大大扩充了数据类型,而且还可以自定义数据类型
4) Schema支持元素的继承
5) Schema支持属性组
Schema 的文档结构:
所有的Schema文档使用schema作为其根元素
http://www.w3.org/2001/XMLSchema:用于验证当前 Schema文档的命名空间(用于验证Schema本身)同时它还规定了来自命名空间http://www.w3.org/2001/XMLSchema的元素和数据类型应该使用前缀xs:
xmlns相当于 java中的 import, :xs“小名”,在使用时要写加“小名”做前缀
注:(XML 使用 Schema验证,那 Schema也是一个 XML,谁来验证它?DTD)
4.使用 Schema验证 XML文档
1) 创建SchemaFactory 工厂
2) 建立验证文件对象
3) 利用SchemaFactory 工厂对象,接收验证的文件对象,生
成Schema对象
4) 产生对此schema的验证器
5) 要验证的数据(准备数据源)
6) 开始验证
代码如下:
结果:
解析 XML数据:在Java程序中读取XML 文件的过程称为解析XML
解析 XML文件的方式:
1) DOM 解析 (java官方提供)
2) SAX 解析(java官方提供)
3) JDOM 解析(第三方提供)
4) DOM4J 解析(第三方提供)
1.DOM解析 步骤:
1) 创建一个DocumentBuilderFactory的对象
2) 创建一个DocumentBuilder 对象
3) 通过DocumentBuilder的parse(...)方法得到Document对象
4) 通过getElementsByTagName(...)方法获取到节点的列表
5) 通过for 循环遍历每一个节点
6) 得到每个节点的属性和属性值
7) 得到每个节点的节点名和节点值
优点:形成了树结构,有助于更好的理解、掌握,且代码容易编写。解析过程中,树结构保存在内存中,方便修改。
缺点:专用内存大,效率慢
SAX 方式解析 XML数据 :
SAX概念:全称 Simple API for XML,是一种以事件驱动的XMl API,SAX 与DOM 不同的是它边扫描边解析,自顶向下依次解析
解析步骤:
1) 创建SAXParserFactory 的对象
2) 创建SAXParser对象 (解析器)
3) 创建一个DefaultHandler 的子类
4) 调用parse方法
特点:采用事件驱动模式,对内存耗费比较小。
SAX解析适用于只处理XML 文件中的数据时
代码:
结果:
JDOM解析 XML数据:
概念:JDOM是一种解析XML的Java工具包, 它基于树型结构,利用纯Java的技术对XML文档实现解析
DOM解析 XML的步骤
1) 创建一个SAXBuilder对象
2) 调用build方法,得到Document对象(通过IO 流)
3) 获取根节点
4) 获取根节点的直接子节点的集合
5) 遍历集合
特点:JDOM解析:
仅使用具体类,而不使用接口。API 大量使用了 Collections 类。
代码:
DOM4J方式解析 XML数据:
概念:DOM4J 是一个 Java的 XML API,是 JDOM 的升级品,用来读写XML 文件的
步骤:1) 创建SAXReader对象
2) 调用read方法
3) 获取根元素
4) 通过迭代器遍历直接节点
代码:(将结果封装在Book类里面输出):
DOM4J解析特点:
JDOM 的一种智能分支,它合并了许多超出基本 XML 文档表示的功能。它使用接口和抽象基本类方法。具有性能优异、灵活性好、功能强大和极端易用的特点。是一个开放源码的文件
XPATH技术_快速获取节点 :
准备资源
1) DOM4J 的jar包
2) Jaxen的jar包
3) Xpath中文文档
代码: