首页 > 编程语言 > 详细

XML 可拓展标记语言

时间:2020-07-19 14:51:12      阅读:51      评论:0      收藏:0      [点我收藏+]

XML 简介

a) xml, eXtensible Markup Language, 可拓展标记语言.是一种标记语言.
b) xml是一种非常灵活的语言, 没有固定的标签, 所有的标签都可以自定义.
c) 通常,xml被用于信息的记录和传递. 因此xml经常用于充当配置文件

XML格式

a) 声明信息 ,用于描述XML的版本,编码方式.

版本始终是1.0 编码一般选utf-8

<?xml version="1.0" encoding="UTF-8"?>

b) 根元素 (一对标签)

根元素有且仅有一个

c) xml是大小写敏感的

d) 标签是成对的,而且要正确嵌套

e) 属性值要使用双引号

下面id就是属性,""里面是属性值

<?xml version="1.0" encoding="utf-8"?>
<a>
	<aa id="101">
		xxx
	</aa>
</a>

f) 注释写法

<!-- 这里是注释-->
<?xml version="1.0" encoding="utf-8"?>
<books>
	<book>
		<name>
			xml101
		</name>
		<author>
			张三
		</author>
		<price>
			50.5
		</price>
	</book>
	<book>
		<name>
			xml102
		</name>
		<author>
			李四
		</author>
		<price>
			40.4
		</price>
	</book>
</books>
<!-- 这里是注释-->

可以直接用浏览器打开

技术分享图片

还可以折叠

技术分享图片

DTD

DTD 简介

a) DTD , Document Type Definition,文档类型定义

b) DTD 用于约束xml的文档格式,保证xml是一个有效的xml.

c) DTD 可以分为两种,内部DTD,外部DTD.

DTD内部声明

假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:

<!DOCTYPE 根元素 [元素声明]>

元素声明语法 :

数量词

+: 出现一次或多次
?: 出现0次或一次
*: 出现任意次

属性声明语法

<!ATTLIST 元素名称 属性名称 属性类型 默认值>

技术分享图片

技术分享图片

PCDATA

PCDATA 的意思是被解析的字符数据(parsed character data)。

可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。

PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。

文本中的标签会被当作标记来处理,而实体会被展开。

不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 实体来分别替换它们。

CDATA

CDATA 的意思是字符数据(character data)。

CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE scores[
	<!ELEMENT  scores (student*)>
	<!ELEMENT  student (name,course,score)>
	<!ATTLIST  student id CDATA #REQUIRED>
	<!ELEMENT  course (#PCDATA)>
	<!ELEMENT  score (#PCDATA)>
	<!ELEMENT  name (#PCDATA)>
]>

<scores>
	<student id="1">
		<name>
			张三
		</name>
		<course>
			数学
		</course>
		<score>
			75
		</score>		
	</student>
	<student id="2">
		<name>
			李四
		</name>
		<course>
			数学
		</course>
		<score>
			88
		</score>		
	</student>
</scores>

外部的DTD声明

假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:

要创建一个单独的dtd文档 1.dtd

<?xml version="1.0" encoding="utf-8" ?>
<!ELEMENT  scores (student*)>
<!ELEMENT  student (name,course,score)>
<!ATTLIST  student id CDATA #REQUIRED>
<!ELEMENT  course (#PCDATA)>
<!ELEMENT  score (#PCDATA)>
<!ELEMENT  name (#PCDATA)>

然后引入

<?xml version="1.0" encoding="utf-8" ?>
<!-- 引入外部DTD文件-->
<!DOCTYPE scores SYSTEM "1.dtd">

<scores>
	<student id="1">
		<name>
			张三
		</name>
		<course>
			数学
		</course>
		<score>
			75
		</score>		
	</student>
	<student id="2">
		<name>
			李四
		</name>
		<course>
			数学
		</course>
		<score>
			88
		</score>		
	</student>
</scores>

DTD实体

实体是用于定义引用普通文本或特殊字符的快捷方式的变量。

实体引用是对实体的引用。

实体可在内部或外部进行声明。

在DTD中的实体类型,一般分为:内部实体和外部实体,细分又分为一般实体和参数实体。除外部参数实体引用以字符(%)开始外,其它实体都以字符(&)开始,以字符(;)结束。

一个内部实体声明

语法:

<!ENTITY 实体名称 "实体的值">

例子:

<!ENTITY writer "Bill Gates">
<!ENTITY copyright "Copyright W3School.com.cn">

使用:

<author>&writer;&copyright;</author>

一个外部实体声明

语法:

<!ENTITY 实体名称 SYSTEM "URI/URL">

例子:

<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">

使用:

<author>&writer;&copyright;</author>

XSD

简介

- XML Schema是DTD的替代者
- 不仅可以定义XML文档的结构,还可以规范文档的内容
- XSD本身也是XML文档,
- XSD采用XML文档来定义语义约束,比DTD要复杂一些,但是功能强大的多。

  • 支持丰富的数据类型
  • 允许开发者自定义数据类型
  • 可读性强
  • 可针对未来需求进行扩展

XML的解析

对xml文件进行操作 , 包括创建,增删改查

DOM解析

官网提供的解析方式

基于XML树结构, 比较耗资源

SAX解析

民间的解析方式 , 基于事件的解析

消耗消耗小,适用数据量大的xml

JDOM 解析

开源 , 比DOM快

DOM4J

DOM forJAVA


解析方式用到了再学emmm

XML 可拓展标记语言

原文:https://www.cnblogs.com/l0nmar/p/13337996.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!