谢谢楼主!

概述

xml:eXtensible Markup Language,可拓展标记语言。作用主要是做配置文件和数据传输载体。本文只说明它做配置文件的知识。下面介绍它的文档结构、元素&属性、注释&CDATA、解析、DTD约束、Schema约束。

文档结构

1.文档声明
任何一个xml文件都是的第一行都必须是文档声明。简单文档声明如下:<?xml version="1.0" ?>。文档声明中可以存在属性,需要了解两个属性:encoding,值是:解码规则,如utf-8 和 standalone,值是:yes或者no。前者表明文档的解码规则,后者表明文档是否是独立的xml文档。由于一般都是独立的xml文档,所以这个属性不常用。

2.encoding
字符从输入到保存再到下次打开,会存在两次操作,一次是在保存的时候采用何种编码规则进行保存,一次是在打开的时候采用何种编码规则来打开,前者是编码规则,后缀是解码规则。解码规则和编码规则一直时才能把上次保存的字符展示出来,否则便是乱码。对于下面的一个简单xml文档。选择另存为的时候会发现有格式有很多的选择,其中默认的是本机的编码格式,对于国内来说也就是GBK编码。

对于下面的这段文档,使用"utf-8"和"GBK"都能正常保存,但是使用"iso-8859-1"就不行了,因为中文字符不能被存为"iso-8859-1"。

<?xml version="1.0" encoding="utf-8"?>
	<stus>
		<stu>
			<name>张三</name>
			<age>18</age>
		</stu>
		<stu>
			<name>李四</name>
			<age>28</age>
		</stu>
	</stus>

在每个xml文件中,都有一个根元素,如上面的是stus。而且所有的xml文档都是树形结构。上面的代码中stu 是stus 的孩子,name 和 age 又是stu 的孩子。可以总结为下图:

xml配置resource下所有xml文件 xml配置文件是什么_xml

元素&属性

我们刚才写的代码中,stus、stu、name、age都是元素;在文档声明中encoding 是属性;“UTF-8”是属性值,张三、李四 等是文本。

自定义元素规则:

  • 名称可以含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字符 “xml”(或者 XML、Xml)开始
  • 名称不能包含空格

属性规则

  • 属性的名称没有要求
  • 属性的值需要用引号引起来

解析xml的方式

xml的解析方式有很多种,但是常用的有两种。DOM和SAX。

DOM:document object model
DOM解析方式是把整个xml文档都加载到内存中,解析成树状结构。此文档被叫做document。之前说过的元素被叫做element,属性被叫做attribute,文本被叫做text,他们有一个共同的父亲Node。

SAX:simple API for XML
基于事件驱动,即不再是全部加载进内存,而是逐行扫描文档,一边扫描一边解析,可以在解析文档的任意时刻停止解析。

区别
DOM不仅可以检索数据,还可以增加和删除,而SAX只能进行检索。而且SAX速度更快,效率更高。