XML文档
关于xml文档的一些解释 最近学习JAVA后端,用到了xml文档,但是只会粘贴复制,简单配置一些关于Spirng或者Maven的东西,其中有些标签却不明白什么意思,所以写了这篇文章来好好理解一下。
XML 概念
1、Extensible Markup Language 可扩展标记语言
- 可扩展:标签都是自定义的。
2、功能
- 存储数据,把xml作为配置文件
- 在网络中传输
3、xml与html的区别
- xml标签是自定义得,html标签是预定义得。
- xml得语法严格,html语法松散
- xml是存储数据的,html是展示数据的
语法
1、xml第一行必须定义为文档声明 2、xml文档中有且仅有一个根标签 3、 标签必须正确关闭 4、属性值必须使用引号引起来 5、xml标签名称区分大小写
xml组成部分
1、文档声明
- 格式:
<? xml 属性列表 ?>
- 属性列表: 1、version:版本号,是必须的属性 2、encoding:编码方式.默认值:ISO-8859-1 3、standalone:是否独立
- yes:不依赖其他文件
- no:依赖其他文件
2、指令 3、标签 标签名称是自定义的,但是有一些规则。
- 名称可以包含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母 xml 等开始
- 名称不能有空格
4、属性 5、文本内容
xml 的约束
约束文档:用于规定xml文档的书写规则,使得框架可以解析它。是由框架方编写.
分类
1、DTD:简单的约束技术
- 引入dtd文档到xml文档中 1、内部dtd:将约束规则定义在xml文档中 2、外部dtd:将约束规则定义在外部的dtd文件中 本地的:
<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置"
网络的:<DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的url"
- 缺陷:不能规定标签里面的输入的内容。比如一个标签是age,但是我们可以输入1000、字符串等这些不合理的输入。
2、Schema:一种复杂的约束技术
- 引入 xsd文档 1、填写xml文档的根元素 2、引入xsi前缀:xmlns:xsi = "" 3、引入xsd文件命名空间 xsi:schemaLocation="一个url xxx.xsd"
Beans
这个标签是文档的根元素,其他所有元素都写在根元素中。
xmlns
xmlns:xmlNameSpace的缩写。可叫做xml命名空间。当两个文档都包含带有不同内容和定义的1 | xmlns="http://www.springframework.org/schema/beans" |
这一句表示该文档默认的XML Namespace为http://www.springframwork.org/schema/beans
对于默认的Namespace中的元素,可以不使用前缀。例如Spring XML文档中的
1 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
这句话是对xsi这个NameSpace 的定义。给这个URL起的别名为xsi。
1 | xsi:schemaLocation= |
xsi:schemaLocation属性其实是Namespace为http://www.w3.org/2001/XMLSchema-instance
里的schemaLocation属性.之前的声明使得我们可以写为xsi:schemaLocation.
它定义了XML Namespace和对应的XSD(Xml Schema Definition)文档的位置的关系。它的值由一个或多个URI引用对组成,两个URI之间以空白符分隔(空格和换行均可)。第一个URI是定义的XML Namespace的值,第二个URI给出Schema文档的位置,Schema处理器将从这个位置读取Schema文档,该文档的targetNamespace必须与第一个URI相匹配
解析
操作xml文档,将文档中的数据读取到内存中
解析xml的方式:
DOM思想:将标记语言文档一次性加载进内存,在内存中形成一棵dom树
优点:操作方便,可以对文档进行crud的所有操作 缺点:占内存
SAX:逐行读取。基于事件驱动的。里面有一个指针,碰到一个标签就触发一个动作 优点:基本不占内存 缺点:只能读取,不能增删改
XML文档常见的解析器
1、JAXP:sun公司提供的解析器。支持dom和sax两种思想 2、DOM4J 3、Jsoup 4、PULL:Android操作系统内置的解析器