跳至主要內容

xml

HeChuangJun约 1163 字大约 4 分钟

xml

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个不同名属性
    • 属性名不能空格冒号,必须字母开头
  • 注释 <!--注释-->
xml转义字符.png
xml转义字符.png
  • <![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 表示内容是文本不是子标签
    • 后面没加符号的表示有且只有一次,()分组并指示子元素个数及顺序
dtd元素声明.png
dtd元素声明.png
  • 属性声明<!ATTLIST 标签名 属性描述 属性描述2 ...>
    • <!ATTLIST hibernate-mapping schema CDATA #IMPLIED>
    • 属性描述
      • 属性名:自定义
      • 属性类型:CDATA ,ID ,枚举(xx|)
      • 属性约束:#REQUIRED (必须) #IMPLIED(可选)

3.2. Schema约束

3.3. xml解析

  • DOM解析
    • 将xml文档加载到内存形成树结构,形成Document对象
      • 优点:元素与元素有结构关系,能CRUD,
      • 缺点:文档太大易内存溢出
  • SAX解析
    • 事件驱动的方式逐行边读边解析,每执行一行都触发相应的事件
      • 优点:文档大也不内存溢出,速度快
      • 缺点:只读,不能CRUD,运行后释放资源
  • PULL:安卓内置的xml解析方式,类似sax(了解)

3.4. 解析开发包

xml解析开发包.png
xml解析开发包.png

3.5. DOM解析原理及结构模型

  • 原理:将整个xml文档加载到内存,生成一个DOM树并获得Document对象以完成DOM操作
dom解析原理.png
dom解析原理.png