XML
- XML的全称是Extensible Markup Language,可扩展标记语言
- 编写XML就是编写标签,扩展名.xml
- XML有着良好的人机可读性
用途
- java程序的配置描述文件
<config>
<application-name>X电商平台</application-name>
<host-ip>192.168.132.65</host-ip>
<page-size>10</page-size>
</config>
文档结构
- 第一行必须是XML声明
- 有且只有一个根标签
- XML标签的书写规则
XML声明
- XML声明说明XML文档的基本信息,包括版本号与字符集,写在XML第一行
<?XML version="1.0" encoding="UTF-8"?>
//version代表版本号,endoding表示字符集设置
XML根标签
- 每个XML文档必须拥有“根标签”
- 标签是有上下级关系的,上级为“父标签”,下级为“子标签”
- 标签也常被称为“节点”
<?XML version="1.0" encoding="UTF-8"?>
<employee>
<name>张三</name>
<age>18</age>
</employee>
XML标签书写规则
合法的标签名
- 标签名要有意义
- 建议使用英文小写字母,单词之间使用“-”分隔
- 建议多级标签之间不要存在重名情况
适当的注释与缩进
- 适当注释和缩进可以让XML文档更易阅读
合理使用属性
- 属性用来描述标签不可或缺的信息
<shop-cart>
<item sn="101" category="电器">
<name>空调</name>
<price>1000</price>
<num>1</num>
</item>
</shop-cart>
特殊字符与CDATA标签
标签中出现‘<’等类似字符会破坏文档结构
- 解决方案1:使用实体引用
实体引用 | 对应符号 | 说明 |
---|---|---|
< | < | 小于 |
> | > | 大于 |
& | & | 和号 |
' | ’ | 单引号 |
\quot; | " | 双引号 |
- 解决方案2:使用CDATA标签处理特殊字符
<exam>
<question>><![CDATA[1+4<3是否正确?]]></question>
</exam>
有序的子元素
- 在XML多层嵌套的子元素中,标签前后顺序应该保持一致
XML语义约束
- XML语义约束有两种定义方式:DTD和XML Schema
DTD(Document Type Definition)
- DTD是一种简单易用的语义约束方式
- DTD的文件扩展名为.dtd
DTD定义节点
- 利用<!ELEMENT>标签,我们可以定义XML文档中允许出现的节点及数量
- 定义hr节点下只允许出现一个employee节点
<!ELEMENT hr(employee)>
- employee节点下必须包含以下四个节点,且按照顺序出现
<!ELEMENT employee(name,age,salary,department)>
- 定义name标签体只能是文本,#PCDATA代表文本元素
<!ELEMENT name(#PCDATA)>
DTD定义节点数量
- 如果某个子节点需要多次重复出现,则需要在子节点后增加相应的描述符
- hr节点下最少出现一个employee子节点
<!ELEMENT hr(employee+)>
- hr节点下出现0-n个employee子节点
<!ELEMENT hr(employee*)>
- hr节点下最多出现一个employee子节点
<!ELEMENT hr(employee?)>
XML引用DTD
- XML中使用<!DOCTYPE>标签来引用DTD文件,其中SYSTEM表示同目录下
<!DOCTYPE hr SYSTEM "hr.dtd">
XML Schema
- XML Schema比之DTD更复杂,提供了更多的功能
- XML Schema提供了数据类型,格式限定,数据范围等特性
- XML Schema是W3C标准