此篇文章包含XML基础介绍,DTD,XML解析技术(DOM)
里面内容都是基础,想要了解更多推荐W3School
XML初步
XML:eXtensible Markup Language 可扩展标记语言
XML是一种灵活的标记的语言,没有固定标签,所有的标签都可以自己定义。
通常XML被用于信息的记录与传递,因此XML通常作为配置文件。
- 格式良好的XML
- 开头第一句是XML格式声明,用于描述XML的版本(版本只有1.0)和编码方式。
<?xml version="1.0" encoding="UTF-8" ?>
- XML是大小写敏感的。
- XML有且只有一个根元素。一个XML文件最外层标签只能一个其他标签只能写在最外层标签里。
例如下面代码就是错的,跟元素只能有一个。
<a > </a>
<aa> </aa>
正确的写法只能有一个根元素,例如下面。
<a>
<aa> </aa>
</a>
- XML标签是成对的,要正确嵌套。
- 属性值要用双引号括住。
<a attribute="这里是属性"> </a>
- 要有注释
<!-- 这里是注释 -->
DTD
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块
- . DTD文档类型定义
- DTD用来约束XML的文档格式,保证XML是一个有效的XML。
- DTD可以分为两种。(内部DTD、外部DTD)
- DTD的定义
- 内部的 DOCTYPE 声明
<!DOCTYPE 根元素 [元素声明]>
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
以上 DTD 解释如下:
!DOCTYPE note (第二行)定义此文档是 note 类型的文档。
!ELEMENT note (第三行)定义 note 元素有四个元素:“to、from、heading,、body”
!ELEMENT to (第四行)定义 to 元素为 “#PCDATA” 类型
!ELEMENT from (第五行)定义 from 元素为 “#PCDATA” 类型
!ELEMENT heading (第六行)定义 heading 元素为 “#PCDATA” 类型
!ELEMENT body (第七行)定义 body 元素为 “#PCDATA” 类型
5. 数量词
+:表示出现一次或者多次(最少一次)
?:表示出现0词或者1次。
*:表示出现任意次。
例如上面代码note里面我们需要放多个同级form标签,直接写会报错这是就需要数量词。在note后面form后加星
<!ELEMENT note (to,from*,heading,body)>
- 外部文档声明
假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:
<!DOCTYPE 根元素 SYSTEM "文件名">
这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD:
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
这是包含 DTD 的 “note.dtd” 文件:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
-
属性限制(了解情趣W3School)
-
大家还可以了解一下XSD,它是DTD升级版,不仅可以规范XML的结构,还能规范内容。
XML解析技术
对XML文件进行操作,对XML文件进行增删改查。
- 常见XML解析技术
- DOM技术,是官方提供的解析方式。基于XML树(先将整个XML加载)进行解析,消耗资源比较大,适用于多次解析。
- SAX技术,基于事件的解析,消耗资源小,适用于数据量较大的XML的解析。(直接开始解析,不预先加载成树)
- JDOM,比DOM快,使用类,不用接口。开源免费。
- DOM4J,(念DOM for J)第三方提供,JDOM升级版,多数Java软件使用它来解析XML
DOM4J解析XML文件
上面我们介绍DOM4J是第三方提供,所以事先必须要在网上下载DOM4J的JAR包,导入我们项目才可以使用。大家可以通过我分享的百度网盘下载,也可以百度搜索通过官网下载。
链接:https://pan.baidu.com/s/1OWgyJ8OfapG9WIGAHz1Ajw
提取码:ebs5
大家学习DOM4J可以先去看一下DOM,这样有一定DOM基础会更好理解
- 节点概念
根据 DOM,XML 文档中的每个成分都是一个节点。
DOM 是这样规定的:
整个文档是一个文档节点
每个 XML 标签是一个元素节点
包含在 XML 元素中的文本是文本节点
每一个 XML 属性是一个属性节点
注释属于注释节点
使用DOM4J请移步到另一篇博客
如何使用DOM4J