XML解析

来源:互联网 发布:灰鸽子远程控制源码 编辑:程序博客网 时间:2024/06/04 19:12

1.xml基础
1.1什么是XML

1.XML是指可扩展标记语言(eXtensible Markup Language),它也是一种标记语言,很类似HTML。它被设计的宗旨是存储数据,而非显示数据。2.Html展示数据3.纯文本、跨平台、可读性强(相对json)4.XML标签没有被预定义,需要用户自行定义标签。5.XML技术是W3C组织(World Wide Web Consortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的XML1.0规范。6.XML被广泛认为是继Java之后在Internet上最激动人心的新技术

1.2 XML常见应用

1.用于存储2.用在软件配置,用于描述模块之间的关系(如著名的Struts、Spring和Hibernate都是基于XML作为配置文件的--SSH)android都是xml。 图形界面都是用的xml3.在一个软件系统中,通过XML配置文件可以提高系统的灵活性。即程序的行为是通过XML文件来配置的,而不是硬编码4.XML是一种通用的数据交换格式。(跨平台)

2 XML的语法

一个XML文件主要包括以下几个部分:   文档声明   元素   属性   注释     实体引用及CDATA区    处理指令(PI:Processing Instruction)   Xml约束 

2.1. 文档声明

   在编写XML文档时,需要先使用文档声明来声明XML文档。且必须出现在文档的第一行。(前面注释都不允许)    最简单的语法:<?xml version=“1.0”?>   用encoding属性说明文档所使用的字符编码。保存在磁盘上的文件编码要与声明的编码一致。   如:<?xml version=“1.0” encoding=“utf-8”?>   用standalone属性说明文档是否独立,即是否依赖其他文档。 如:<?xml version=“1.0”  encoding=“utf-8” standalone=“yes”?>

2.2. 元素

   XML元素指XML文件中出现的标签。一个标签分为起始和结束标签(不能省略)。一个标签有如下几种书写形式:   包含标签主体:<mytag>some content</mytag>    不含标签主体:<mytag    />(有时也叫空标签)   一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套。   <mytag1><mytag2></mytag1></mytag2>    一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签或孙标签。   对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的。<网址>ww.1000phone.copm </网址><网址>ww.1000phone.copm</网址>  --DOM解析   由于在XML中,空格和换行都作为原始内容被处理,所以,在解析XML文件时要特殊处理下,绕过这些空格和换行符。   元素命名规范:一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范   区分大小写,例如,<A>和<a>是两个不同的标记。(与java、c变量命名一致)   不能以数字或"_" (下划线)开头。   不能以xml(或XML、或Xml 等)开头。(xml 为关键字,所以不能重复)   不能包含空格。   名称中间不能包含冒号(:)。   一句话:像个正常人一样去写名称就行,不用关键字

2.3. 属性

   一个元素可以有多个属性,每个属性都有它自己的名称和取值,例如:<mytag name=“value” …/>   属性值一定要用引号(单引号或双引号)引起来。   属性名称的命名规范与元素的命名规范相同   元素中属性没有顺序要求,但是不准重复。   在XML技术中,标签属性所代表的信息也可以被改成用子元素的形式来描述

2.4. 注释

   XML中的注释语法为:<!--这是注释-->   注意:   XML声明之前不能有注释(xml声明必须放在文档第一行)   注释不能嵌套,例如:

2.5. 实体引用及CDATA区
实体引用

   在 XML 中,一些字符拥有特殊的意义。如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。如下这样会产生 XML 错误:

if salary < 1000 then

   为了避免此类错误,需要把字符 "<" 替换为实体引用,就像这样:

if salary < 1000 then
在 XML 中有 5 个预定义的实体引用:
< < 小于
> > 大于
& & 和号
' ’ 省略号
" ” 引号
 注意:严格地讲,在 XML 中仅有字符 “<”和”&” 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。
CDATA区

术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。在 XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。    某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。CDATA 部分中的所有内容都会被解析器忽略。CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

2.6. 处理指令

   处理指令,简称PI(Processing Instruction)。   作用:用来指挥软件如何解析XML文档。   语法:必须以“<?”作为开头,以“?>”作为结尾。   常用处理指令:   XML声明:<?xml version=“1.0” encoding=“GB2312”?>   xml-stylesheet指令:作用:指示XML文档所使用的CSS样式XSLT。   使用 CSS 格式化 XML 不是常用的方法,更不能代表 XML 文档样式化的未来。

2.7. XML约束
为什么需要约束:

   XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错。

什么是XML约束:

   约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。   在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。   常用的约束技术XML DTD,  XML Schema    作为普通工程师,一般是使用别人的约束文件,而不会自己去写约束。例如使用SSH框架开始时用到的xml文件,均要受框架的提供的xml的约束文件的约束

3.XML的解析

  1. DOM解析

    DOM(文档对象模型):将文档整个加载进内存,形成一颗DOM树(document对象),将文档的各个部分封装成为对象。
    优点:因为在内存中形成dom树,可以对dom树进行增删改查
    缺点:因为在内存中形成dom树,占用内存大,不适合大文件
    目标:
    创建XML文件:
    这里写图片描述

这里写图片描述
解析XML:
这里写图片描述

  1. SAX解析

    SAX(基于事件流的解析):省内存,但不能实现对文档内容的修改,只能读取。
    Simple APIs for XML,XML简单应用程序接口,在javax.xml.parsers包中,SAX解析是JDK自带的解析方式,包括一组接口和类

5.1. SAX解析原理

以事件驱动的方式解析,即找开始结束标签的方式SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。所以有两个关键点:顺序扫描,事件处理函数

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

原创粉丝点击