XML

概念

XML的全称是EXtensible Markup Language,可扩展标记语言

编写XML就是编写标签,与HTML类似,扩展名.xml

有良好的人机可读性

XML与HTML的比较

XML与HTML非常相似,都是编写标签

XML没有预定义标签,HTML存在大量预定义标签

XML重在保存与传输数据,HTML用于显示信息

XML的用途

Java程序的配置描述文件

用于保存程序的产生的数据

网络间的数据传输

XML文档结构

第一行必须是XML声明

有且只有一个根节点

XML标签的书写规则与HTML相同

XML声明

XML声明说明XML文档的基本信息,包括版本号与字符集,写在XML第一行

image.png

version代表版本号,encoding UTF-8设置字符集,用于支持中文

XML标签书写规则

合法的标签名

  • 标签名要有意义
  • 建议使用英文、小写字母,单词之间使用-分隔
  • 建议多级标签之间不要存在重名的情况

适当的注释与缩进

适当的注释与缩进可以让XML文档更容易阅读

合理使用属性

标签属性用于描述标签不可或缺的信息

对标签分组或者为标签设置id时常用属性表示

特殊字符与CDATA标签

标签体中出现<、>特殊字符,会破坏文档结构

两种解决方案:使用实体引用,使用CDATA标签

XML支持五种实体引用

  • &lt;    <    小于
  • &gt;    >    大于
  • &amp;    &    和号
  • &apos;    '    单引号
  • &quot;    "    双引号

CDATA标签

指的是不应由XML解析器进行解析的文本数据

从“<![CDATA[”开始,到“]]>”结束

有序的子元素

 

在XML多层嵌套的子元素中,标签前后顺序应保持一致。

XML语义约束

DTD

Document Type Definition,文档类型定义,是一种简单易用的语义约束方式,扩展名为.dtd

定义节点

利用DTD中的<!ELEMENT>标签,可以定义XML文档中运行出现的节点及数量

定义hr节点下只允许出现1个employee子节点

<!ELEMENT hr (employee)>

employee节点下必须包含四个节点,且按顺序出现

<!ELEMENT employee (name,age,salary,department)>

定义name标签体只能是文本,#PCDATA代表文本元素

<!ELEMENT name(#PCDATA)>

定义节点数量

hr节点下最少出现1个employee子节点

<!ELEMENT hr (employee+)>

hr节点下可出现0...n个employee子节点

<!ELEMENT hr (employee*)>

hr节点下最多出现1个employee子节点

<!ELEMENT hr (employee?)>

引用DTD文件

<!DOCTYPE 根节点 SYSTEM "dtd文件路径">

image.png

XML Schema

XML Schema比DTD复杂,提供了更多功能

提供了数据类型,格式限定,数据范围等特性

是W3C标准

DOM文档对象模型

Document Object Model定义了访问和操作XML文档的标准方法,DML把XML文档作为树结构来查看,能够通过DOM树来读写所有元素

Dom4j

是一个易用的,开源的库,用于解析XML。它应用于Java平台,具有性能优异、功能强大和极其易使用的特点

Dom4j将XML视为Document对象

XML标签被Dom4j定义为Element对象

代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd"><!-- 人力资源管理系统 -->
<hr>
	<employee no="3309">
		<name>张三</name>
		<age>31</age>
		<salary>4000</salary>
		<department>
			<dname>会计部</dname>
			<address>XX大厦-B103</address>
		</department>
	</employee>

	<employee no="3310">
		<name>李四</name>
		<age>23</age>
		<salary>3000</salary>
		<department>
			<dname>工程部</dname>
			<address>XX大厦-B104</address>
		</department>
	</employee>
	<employee no="3311">
		<name>李铁柱</name>
		<age>37</age>
		<salary>3600</salary>
		<department>
			<dname>人事部</dname>
			<address>XX大厦-B105</address>
		</department>
	</employee>
</hr>
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT hr (employee+)>
<!ELEMENT employee (name,age,salary,department)>
<!ATTLIST employee no CDATA "">
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT salary (#PCDATA)>
<!ELEMENT department (dname,address)>
<!ELEMENT dname (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
	<element name="hr">
		<!-- complexType标签含义是复杂节点,包含子节点时必须使用这个标签 -->
		<complexType>
			<sequence>
				<element name="employee" minOccurs="1" maxOccurs="9999">
					<complexType>
						<sequence>
							<element name="name" type="string"></element>
							<element name="age">
								<simpleType>
									<restriction base="integer">
										<minInclusive value="18"></minInclusive>
										<maxInclusive value="60"></maxInclusive>
									</restriction>
								</simpleType>
							</element>
							<element name="salary" type="integer"></element>
							<element name="department">
								<complexType>
									<sequence>
										<element name="dname" type="string"></element>
										<element name="address" type="string"></element>
									</sequence>
								</complexType>
							</element>
						</sequence>
						<attribute name="no" type="string" use="required"></attribute>
					</complexType>
				</element>
			</sequence>
		</complexType>
	</element>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- 人力资源管理系统  -->
<hr xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hr.xsd">
	<employee no="3309">
		<name>张三</name>
		<age>31</age>
		<salary>4000</salary>
		<department>
			<dname>会计部</dname>
			<address>XX大厦-B103</address>
		</department>
	</employee>
	
	<employee no="3310">
		<name>李四</name>
		<age>23</age>
		<salary>3000</salary>
		<department>
			<dname>工程部</dname>
			<address>XX大厦-B104</address>
		</department>
	</employee>
</hr>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值