XML——简介、语法、约束、解析

2026-07-03 07:20:36

XML简介

1.eXtensible Markup Language: 可扩展标记型语言.

*标记型语言: html是标记型语言, 也就是使用标签来操作

*可扩展: html中标签固定, 每个标签都有特定的含义. xml中的标签可以自定定义, 也可以写中文标签.

2.用途:

*html用于显示数据, xml也可以用于显示数据(不是主要功能)

*xml主要用于 存储数据.

XML的应用

1.不同系统之间传输数据

2.用来表示生活中有关系的数据

3.常用于配置文件

*

比如连接数据库, 要将数据库用户名密码存储到xml中, 以后要修改数据库信息, 不需要修改源码, 只需要修改配置文件即可.

XML的语法

1.xml的文档声明

1.创建一个文件,后缀名为.xml

2.文档声明:写 xml 文件时必须要有文档申明,表示为 xml 文件: 文档申明必须写在第一行第一列

3.属性:

version:xml 的版本

encoding:xml 编码,有 gbk、utf-8、iso8859-1(不包含中文)

standalone:是否需要依赖其他文件 yes/no

2.定义元素(标签)

1.标签定义有开始也要有结束:

2.标签没有内容,可以在标签内结束:

3.标签必须合理嵌套:

4.一个xml中,只能有一个根标签,其他标签都是这个标签的子标签.

5.xml中把空格和换行会当成内容来解析,下面代码在html中相同,在xml中不同.

3.定义属性

1.一个标签上可以有多个属性

2.属性名不能相同

3.属性名称和属性值之间用 =,属性值用引号(单引号/双引号)

4.注释:

5.特殊字符(替代符号后加;)

< <

> >

6.CDATA区

1.解决多个字符都需要转义的操作

2.把内容放到 CDATA 里面,可以直接按 文本输出

3.

7.PI指令

1.在 xml 中设置样式

2.写法:

3.设置样式,只能对英文标签起作用,对中文不起作用

XML约束

为什么要有约束?

*在xml技术中,编写一个文档/文件来约束一个xml文档的书写规范、称为xml约束。因为没有约束 编写的xml文件格式就不统一.

DTD约束

1.编写步骤

1.创建一个文件 .dtd

2.看xml中有多少个元素, 有几个元素,就在dtd文件中写几个

3.判断元素是简单元素还是复杂元素

复杂元素: 有子元素的元素

简单元素: 没有子元素

4.在xml中引入dtd文件

2.dtd的引入方式

1.引入外部dtd约束

2.内部的dtd约束

]>

3.使用外部的dtd文件(网络上的)

3. 使用dtd定义元素

1.语法:

简单元素:

(#PCDATA):约束 name 是字符串类型

EMPTY:约束元素为空

ANY:约束任意元素

复杂元素

1.表示元素出现的次数:

+:表示1次或多次

?:表示0次或1次

*:表示0次或多次

2.子元素直接使用逗号隔开

表示元素出现的顺序

3.子元素直接使用 | 隔开

表示子元素只能出现任意的一种

4.使用dtd定义属性

1.语法:

2.属性类型

CDATA: 字符串

枚举: (aa|bb|cc)

ID: 值只能是字母或者下划线开头

3.属性的约束

1.#REQUIRED: 属性必须存在

2.#IMPLIED: 属性可有可无

3.#FIXED: 表示一个固定值.

属性的值必须是设置的这个固定值.

schema约束

1.概述:

*schema符合xml的语法

*一个xml中可以有多个schema, 多个schema使用名称空间区分(类似java包名)

*dtd里有有PCDATA类型, 但是在schema可以支持更多的数据类型.

*schema更加麻烦, 限制更加严格.

*以.xsd为后缀名

2.schema 文件里面开头有几个属性

1.xmlns=“ http://www.w3.org/2001/XMLSchema ”

*表示当前xml是一个约束文件

2.targetNamespace=“ http://www.sunny.com/20191229 ”

*使用schema约束文件,直接通过这个地址引入约束文件,可以是个随意的地址

3.elementFormDefault=“qualified”>

表示质量良好

3.编写步骤

1.看 xml 中有多少个元素,有多少个元素就写多少个

2.看是简单元素还是复杂元素

*复杂元素:

子元素

*简单元素:写在复杂元素里面

3.在 xml 中引入 xsd 约束文件

*

表示该文件时被约束文件

*xmlns="http://www.sunny.com/20191229 "

是约束文件里面的 targetNamespace

*xsi:schemaLocation=“http://www.sunny.com/20191229 zy.xsd”>

targetNamespace + 空格 + 约束文档的地址路径

复杂元素指示器

1.:表示元素的出现顺序

2.:表示元素只能出现一次

3.:表示元素只能出现其中一个

4.:表示元素出现的次数,unbounded表示不限制次数

5.:表示任意元素

约束属性

1.位置:写在复杂元素里面的 之前

name:属性名称

type:属性类型 int string

use:属性是否必须出现 required

xml解析简介

1.xml是标记型文档.

2.js使用dom解析标记型文档

*根据html的层级结构, 在内存中分配一个树形结构,把html的标签,文本,属性都封装成对象.

*document对象、element对象、属性对象、文本对象、Node节点对象.

*xml的解析技术: DOM和SAX

DOM和SAX解析对比

1.DOM 解析:

*根据 xml 的层级结构在内存中分配一个树形结构,把 xml 的标签,属性和文本都封装成对象.

*优点:很方便实现增、删、改操作

*缺点:消耗内存,会造成内存溢出

2.SAX 解析

1.采用事件驱动,边读边解析

*从上到下,一行一行的解析,解析到某个对象就返回对象名称

2.优点:不占内存,方便实现查询操作

3.缺点:只能读取,不能实现增、删、改操作

解析器

1.不同的公司和组织提供了针对 DOM和 SAX 方式的解析器,都是通过 api 方式提供的,主要有

*sun 公司提供的针对 dom 和 sax 解析器:Jaxp

*dom4j 组织提供的针对 dom 和 sax 解析器:dom4j(开发中用的最多)

*jdom 组织提供的针对 dom 和sax 解析器:Jdom

*Java的HTML解析器,可以直接解析URL地址、HTML 文本内容:Jsoup