xml基本知识
一、XML语法 1.文档声明: 用来声明xml的基本属性,用来指挥解析引擎如何去解析当前xml <?xml version="1.0" encoding="utf-8" standalone="yes" /> 规范: 处理指令用来指挥解析引擎如何解析XML文档内容。 <?xml-stylesheet type="text/css" href="1.css"?> 二、dtd语法 --- 了解语法,看得懂dtd就可以 1.如何在xml中引入dtd (1)外部引入 可以将dtd的约束内容写在外置的dtd文件中,这个文件后缀必须为.dtd而文件保存时必须用utf-8编码保存. 再在xml文件中使用 <!DOCTYPE 根元素名称 SYSTEM 文件的位置> 如果写的是SYSTEM表明当前引入的dtd在当前文件系统中,后面制定的文件位置是当前硬盘中的位置 <!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL"> 如果写的是PUBLIC表明当前引入的dtd在网络公共位置中,后面要指明dtd的名字和dtd所在网络位置URL地址 (2)内部引入 直接在xml中书写dtd <!DOCTYPE 根元素名称[ dtd约束.... ]> 2.dtd语法 (1)元素 <!ELEMENT 元素名称 元素约束> 元素约束: 存放类型:ANY/EMPTY 元素约束:子元素的列表,将可以包含的子元素用小括号括起来 子元素之间可以使用逗号进行分割,表明子元素必须按照顺序出现 子元素之间可以使用竖线进行分割,表面子元素出现其中之一 #PCDATA 表明包含标签体 + 表示一次或多次 * 0次或多次 ? 0次或一次 也可以使用小括号进行组的操作 (2)属性 <!ATTLIST 元素名 属性名 属性类型 属性约束 属性名2 属性类型 属性约束 ...... > 属性类型: CDATA:表示属性的值是一个普通字符串 ENUMERATED : 属性的值是一个枚举列表中的值 ID: 表明属性的值必须在整个文档中都是唯一的,如果有重复的id则校验不通过,ID 属性的值只能由字母,下划线开始,不能使用数字,不能出现空白字符 属性约束: #REQUIRED --- 表明当前属性是一个必须存在的属性,如果这样的属性不存在则在校验时会报错 #IMPLIED --- 表明当前属性是一个可选的属性,可以有也可以没有 #FIXED '固定值' --- 表明当前属性具有一个固定值,这样的属性不需要进行赋值,自动就会取这个固定值为值.如果这样的属性指定了一个不是固定值的值则校验报错 '默认值' --- 表明当前属性具有一个默认值,如果给了其他的值就用其他值,如果没有给值则取这个默认值 (3)ENTITY(实体) <!ENTITY >,就是对一大段内容的引用,可以简化代码的复用 引用实体:在xml中引用的实体叫做引用实体 <!ENTITY 实体名称 “实体内容” > &实体名称; 参数实体:在dtd中引用的实体叫做参数实体 <!ENTITY % 实体名称 "实体内容"> %实体名称; 三、XML编程:利用java程序去增删改查(CRUD)xml中的数据 解析思想: dom解析 sax解析 基于这两种解析思想市面上就有了很多的解析api sun jaxp既有dom方式也有sax方式,并且这套解析api已经加入到j2se的规范中,意味这不需要导入任何第三方开发包就可以直接使用这种解析方式.但是这种解析方式效率低下,没什么人用. dom4j 可以使用dom方式高效的解析xml. pull !!dom4j 导入开发包,通常只需要导入核心包就可以了,如果在使用的过程中提示少什么包到lib目录下在导入缺少的包即可 四、Schema -- xml的约束技术 --- 需要掌握名称空间的概念,会读简单的Schema就可以了,不需要大家自己会写 Schema是xml的约束技术,出现的目的是为了替代dtd 本身也是一个xml,非常方便使用xml的解析引擎进行解析 对名称空间有非常好的支持 支持更多的数据类型,并且支持用户自定义数据类型 可以进行语义级别的限定,限定能力大大强于dtd 相对于dtd不支持实体 相对于dtd复杂的多,学习成本比较的高 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |