XML知识点总结

2017-01-13 10:53:32来源:csdn作者:qq_18895659人点击


1、XML 简介


XML是 :可扩展标志性语言(extendsible Markup Language)xml是w3c(万维网联盟,WEB技术最权威的国际中立性的技术标准机构)组织发布的技术


xml 有两个版本 1.0 1.1,这里需要注意的是我们使用的是使用1.0 版本(1.1不能向下兼容)。


先来解释一下这个可扩展标志性语言是什么意思:


标记型语言 :html是标记型语言、使用标签操作。 可扩展:html里的标签都是固定的,每个标签都有特定的含义,XML 不是固定的,标签可以自己定义, 比如可以写中文的标签<人></人> <person></person>既然我们要学习XML,就需要知道xml 的用途** HTML 用以显示数据,XML也可以显示数据, 但不是主要功能 ** XML 主要功能是存储数据 2、XML的应用

在实际开发中我们主要把XML实现如下的功能:


不同系统之间传输数据,数据结构清晰,利于维护,用来表示生活中有关系的数据,经常用在配置文件,比如现在连接数据库,肯定要知道数据库IP地址用户名密码等,直接写程序中不好维护, 单独放在一个配置文件中利于维护


3、XML的语法


要学习会使用XML就必须得会下面几点。


(1) xml的文档声明


* 创建一个文件 后缀名是 .xml * 如果写xml ,第一步必须有一个文档声明(表示这是一个xml文档)<?xml version="1.0" encoding="utf-8"?>*** 文档声明必须是文档的第一行,并且是第一列关于头文件属性的解释: - version:xml的版本 1.0(文中使用的版本) 1.1 - encoding: xml编码 gbk utf-8 iso8859-1(不包含中文) 等等 ,这个编码指定打开该文件时读取文件内容的编码,不是保存的编码

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



* xml中文乱码的问题 编辑好xml文件后->默认按系统编码保存,通常是gbk -> 然后打开xml的时候,打开程序(例如IE)根据xml文件的encoding编码去解码 此时如果encoding 指定的编码跟保存时编码不一致,就会出问题,解决的办法是让保存时和打开时的编码都一致

(2) 定义元素(标签)


** 标签定义要符合如下的规定: 标签定义有开始必须要有结束:<person></person> 标签没有内容的可以在标签内结束<person value="as"/> 标签可以嵌套,但必须合理,例如下面这个例子:合理:<a><b></b></a>

不合理: <a><b></a></b>


**xml标签命名规则 (1) xml中区分大小写,<i>和<I>是两个不同标签 (2) 标签名称不能以数字或下划线开头 (3) 不能以xml 以及xml大小写开头,这是不允许的,<xmla> <Xmlb> <XMLx> 这些都是不允许 (4) 标签名称不能包含空格和冒号 如 <a b> <a:b>都不对


标签的定义还得注意以下几个:


** 一个xml中,只能有一个根标签,其他标签都是根标签下的标签

** 在xml中把换行和空格都当成内容来解析



下面两段代码含义不一样 <a>1111</a>
<a>
1111
</a>(3) 定义属性上面已经说到xml是标记型文档,所以和HTML一样可以有属性,接下来我们就说如何定义属性:<person id="aaa" />** 属性定义的要求 (1) 一个标签可以有多个属性,比如:<person id="aaa" xx="aaa"></person> (2) 属性名称不能相同 (3) 属性名和属性值之间使用= ,属性值使用引号包起来(可以使单引号,也可以双引号)

(4) 属性名称规范和元素规范一致



(4) 注释


* XML注释的写法: <!--xml的注释-->** 注意的地方 *** 注释不能嵌套,<!--<!---->-->这个是错误的

*** 注释不能放在文档的第一行,因为第一行是文档声明



(5) 特殊字符** 特殊字符和html的特殊字符一样处理,这里也不过多说明了。(6) CDATA 区这个的功能是可以解决多个字符需要转义的操作,把这些内容放到CDATA区就不需要一个个转义了,这个也很少用到。** 写法<![CDATA[内容]]>,如:<![CDATA[a<b , a>b]]>

** CDATA 区会把特殊字符当文本内容,而不是标签



(7) PI指令 这个指令的功能是 可以在xml中设置样式* 写法: <?xml-styleheet type="text/css" href="css路径"?>注意:只对英文标签名称起作用 (8) xml的约束 对元素严格规定,比如规定一个<persons>下面直接子节点只能是<person> 而不能是<猫>

*约束技术 DTD 和schema,



4、DTD 快速入门 查看文档DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。它使用一系列的合法元素来定义文档结构。这里我也不多说了,这个可以看文档的,可以看文档或者百度百科学习。5、DTD的三种引入方式 (1) 引入外部的dtd文件

<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">



(2) 使用内部的DTD文件


<!DOCTYPE 根元素名称 [ <!ELEMENT person(name,age)> <!ELEMENT name(#PCDATA)> //表示在<name>和</name>标签之间可以插入字符或者子标签。 <!ELEMENT age(#PCDATA)>]>

#PCDATA (Parsed Character Data 被解析的字符数据 任何)



(3) 使用外部的dtd文件(网络上的dtd文件)<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">



6、使用DTD定义元素

DTD 语法:<!ELEMENT 元素名 约束>



(1)简单元素:没有子元素的元素

简单元素结构如下


<!ELEMENT name (#PCDATA)>


(#PCDATA) :表示在<name>和</name>标签之间可以插入字符或者子标签EMPTY:元素为空(没有内容)

ANY : 任意



(2)复杂元素


复杂元素结构如下


<!ELEMENT person (name,age,sex)> //注意空格


<!ELEMENT 元素名称 (子元素)>用下列符号 表示子元素出现的次数: +:表示一次或多次 ?:表示零次或一次 *:表示零次或多次

子元素之间用逗号隔开表示元素出现的顺序,如:<!ELEMENT person (name+,age?,sex*)>


子元素与出现次数之间用|隔开.表示元素只能出现其中的任意一个,如:<!ELEMENT person (name+|age?|sex*)>7、使用DTD来定义属性

定义属性语法: <!ATTLIST 元素名称 属性名称 属性类型 属性的约束 >

而其中属性类型有三种


- CDATA :字符串,如: <!ATTLIST person id1 CDATA #REQUIRED>


- 枚举 :表示只在一定范围内出现的值,而且每次出现其中一个,如: <!ATTLIST person id1 (AA|BB|CC) #REQUIRED>

- 值只能是字母或者下划线开头,如: <!ATTLIST person id1 ID #REQUIRED>


其中的属性的约束有三种- #REQUIRED 必须要存在- #FIXED :表示一个固定值 #FIXED "AAA", 属性值必须是设置的固定值- 直接值 默认值不写属性 ,使用直接值 写了属性,使用设置的那个值 <!ATTLIST person id1 CDATA "AAA">8、实体的定义 实体定义语法语法 :<!ENTITY 实体名称 "实体值"> 使用实体 &实体名称 注意:定义的实体需要写在内部DTD中,如果写在外部DTD,某些浏览器下可能得不到9、XML的解析(重要)我们都知道js使用DOM -- document object model 来解析HTML- document 、element对象、属性对象、文本对象、Node节点对象xml 解析技术: dom 和 sax(1)dom解析根据xml的层级结构在内存中分配一个树形结构,把xml的标签,属性,文本都封装为对象缺点,如果文件过大会造成内存溢出优点 , 方便实现增删改操作(2)sax 解析 采用事件驱动,边读边解析,从上到下,一行一行的解析缺点 :不能实现增删改操作优点 :如果文件过大,不会造成内存溢出,方便实现查询操作 常用的解析器有Dom4j,提供dom和sax两种方式的解析器10、schema约束为替代DTD存在 dtd语法 :<!ELEMENT 元素名称 约束> schema符合XML语法,是XML语句, 一个xml中可以有多个schema,多个schema用命名空间区分(类似JAVA的包名), dtd里有PCDATA类型,但是在schema中可以支持更多数据类型, 比如年龄 只能是整数 ,在schema中可以直接定义一个整型类型, schema语法更加复杂,目前还不能代替dtd schema的快速入门创建一个schema文件 后缀名是.xsd, 根节点<schema>在schema文件里面属性xmlns = "http://www.w3.org/2001/XMLSchema"; //表示你创建的是一个约束文档 属性tagetNamespace = "http://www.chj.com/2014"; //命名空间,如果要使用约束文件,直接通过这个地址引入 //当设置为unqualified时全局元素(可作为根元素)必须添加命名空间前缀,非全局元素不必添加前缀。 属性elementFormDefault="qualified" // 当设置为qualified时,所有的元素都必须添加前缀。步骤 (1)、看xml中有多少个元素 <ELEMENT> (2)、看简单元素和复杂元素<element name="person">
<complextype> //如果是复杂元素
<sequence>
<element name="name" type="string"></element>
<element name="age" type="intger"></element>
</sequence>
</cpmplextype>
</element> (3)、在被约束的文件中引入约束文件<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" //instance表示这是一个被约束的文件,两个xmlns所以这里要取个xsi作为前缀区分 xmlns="http://www.luowg.com/2014"//是约束文件里的 targetNamespace

xsi:schemaLocation="http://www.luowg.com/2014 xx.xsd">//targetNamespace 空格 约束文件的路径


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台