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

  • <![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,
      • 缺点:文档太大易内存溢出
  • 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使用,如有问题欢迎私信和评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值