1. xml介绍
- xml:Extensible Markup Language 可扩展的标记语言,标签可自定义,其他与Html相似
- 用作:配置文件/存放数据
2. xml语法:
- 文档声明:必须从文档的0行0列位置开始;必须以<?xml开头,以?>结束;
- <?xml version=“1.0” encoding=“UTF-8”?>
- 文档声明只有三个属性
- 1.version:指定xml文档版本,必须属性,只选1.0版
- 2.encoding:指定当前文档的编码,可选属性,默认值是utf-8;
- 3.standalone:指定文档独立性,可选属性,默认值为yes,表示当前文档是独立的文档;no表示当前文档不是独立文档,依赖外部文件
- 元素
- <servlet>
- 普通元素的结构由开始标签,元素体,结束标签组成<a></a>
- 元素体可以是元素或者文本<a><b>文本</b></a>
- 空元素只有开始标签,无结束标签,元素必须自己闭合<c/>
- 元素命名区分大小写,不能空格冒号,不建议各种xml开头
- 格式化良好的xml有一个根元素
- 属性
- <web-app version=“2.5”>
- 位于元素的开始标签中,属性=属性值
- 属性值必须单引号或者双引
- 一个元素可以有n个不同名属性
- 属性名不能空格冒号,必须字母开头
- 注释 <!–注释–>
- <![CDATA[需要大量转义字符原来的字符]]>
3. xml约束
3.1. DTD约束
-
文档类型定义,约束XML元素及其子元素的名称及顺序、属性等
-
文档声明:<?xml version=“1.0” encoding=“UTF-8”?>后面
- 内部DTD:<!DOCTYPE 根标签名 [语法…]>只对当前的xml有效
- 外部DTD–本地文件:<!DOCTYPE 根标签名 SYSTEM “xxxx.dtd”>
- 外部DTD–网络:<!DOCTYPE 根标签名 PUBLIC “名称” “路径”>一般由框架提供
-
元素声明<!ELEMENT 标签名 [符号|约束]>
- <!ELEMENT hibernate-mapping (meta*)>
- 符号:?+ * , | () “文嘉兴”
- 约束:#PCDATA 表示内容是文本不是子标签
- 后面没加符号的表示有且只有一次,()分组并指示子元素个数及顺序
-
属性声明<!ATTLIST 标签名 属性描述 属性描述2 …>
- <!ATTLIST hibernate-mapping schema CDATA #IMPLIED>
- 属性描述
- 属性名:自定义
- 属性类型:CDATA ,ID ,枚举(xx|)
- 属性约束:#REQUIRED (必须) #IMPLIED(可选)
3.2. Schema约束
-
比DTD功能强、扩展名为xsd、支持命名空间、数据类型更完善
-
命名空间(解决多个xsd的元素和属性名冲突的问题)
- 给schema文档起一个名称,只是建议采用是url进行命名。是不是官方文档看那个url
- 能在xml中区别多个约束文档中,重名的元素、属性等内容。
- 缺省命名空间(默认):<xxx xmlns=“” >使用元素或属性时不加前缀<xxx>
- 显示命名空间:<xsd xmlns:别名=“”>使用元素或属性时加前缀<别名:xxx>
- 只要url一样,两种声明方式一样
-
文档声明
- <xxx xmlns="…"xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“名称 路径 名称2 路径2 …”> …
- <web-app xmlns=“http://www.example.org/web-app_2_5” 自定义文档命名空间(包名)
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”(官方文档命名空间)
xsi:schemaLocation=“http://www.example.org/web-app_2_5 web-app_2_5.xsd” 使用了官方文档的自定义文档位置属性(包里面的具体类)version=“2.5”>
3.3. xml解析
- DOM解析
- 将xml文档加载到内存形成树结构,形成Document对象
- 优点:元素与元素有结构关系,能CRUD,
- 缺点:文档太大易内存溢出
- 将xml文档加载到内存形成树结构,形成Document对象
- SAX解析
- 事件驱动的方式逐行边读边解析,每执行一行都触发相应的事件
- 优点:文档大也不内存溢出,速度快
- 缺点:只读,不能CRUD,运行后释放资源
- 事件驱动的方式逐行边读边解析,每执行一行都触发相应的事件
- PULL:安卓内置的xml解析方式,类似sax(了解)
3.4. 解析开发包
- JAXP:sun 公司提供支持DOM和SAX开发包
- JDom:dom4j兄弟
- 一种处理 HTML特定解析开发包jsoup:
- dom4j:比较常用的解析开发包,hibernate 底层采用。
3.5. DOM解析原理及结构模型
- 原理:将整个xml文档加载到内存,生成一个DOM树并获得Document对象以完成DOM操作
总结
本文介绍了的xml使用,如有问题欢迎私信和评论