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使用,如有问题欢迎私信和评论

相关推荐

  1. <span style='color:red;'>XML</span><span style='color:red;'>详解</span>

    XML详解

    2024-07-13 09:38:05      57 阅读
  2. <span style='color:red;'>xml</span><span style='color:red;'>详解</span>

    xml详解

    2024-07-13 09:38:05      34 阅读
  3. XML详解

    2024-07-13 09:38:05       18 阅读
  4. Android基础-AndroidManifest.xml详解

    2024-07-13 09:38:05       22 阅读
  5. XML详细介绍

    2024-07-13 09:38:05       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 09:38:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 09:38:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 09:38:05       58 阅读
  4. Python语言-面向对象

    2024-07-13 09:38:05       69 阅读

热门阅读

  1. 【软件测试】 1+X中级 自动化测试试题

    2024-07-13 09:38:05       23 阅读
  2. PostgreSQL UPDATE 命令

    2024-07-13 09:38:05       19 阅读
  3. 手撕排序算法:选择排序

    2024-07-13 09:38:05       28 阅读
  4. ABAP中客户部分清账的BAPI的使用方法

    2024-07-13 09:38:05       23 阅读
  5. 方便快捷传文件—搭建rsync文件传输服务器

    2024-07-13 09:38:05       29 阅读
  6. Git 在commit后,撤销commit

    2024-07-13 09:38:05       19 阅读
  7. 【React Hooks原理 - useRef】

    2024-07-13 09:38:05       21 阅读
  8. web前端开发中需要注意的一些常见问题

    2024-07-13 09:38:05       24 阅读