




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XML解析1、 XML基础1) 什么是XMLl XML是指可扩展标记语言(eXtensible Markup Language),它也是一种标记语言,很类似HTML。它被设计的宗旨是存储数据,而非显示数据。l Html展示数据l XML标签没有被预定义,需要用户自行定义标签。l XML技术是W3C组织(World Wide Web Consortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的XML1.0规范。l XML被广泛认为是继Java之后在Internet上最激动人心的新技术。l W3CSchool(入门级)2) XML常见应用l 用于数据存储l 用在软件配置,用于描
2、述模块之间的关系(如果著名的Struts、Spring和Hibernate都是基于XML作为配置文件的-SSH)android都是xml。 图形界面都是用的xmll 在一个软件系统中,通过XML配置文件可以提高系统的灵活性。即程序的行为是通过XML文件来配置的,而不是硬编码。l XML是一种通用的数据交换格式。(跨平台)2、 XML语法语法较多,建议先直接上手写案例,成功之后再回来当回顾学习用一个XML文件主要包括以下几个部分:l 文档声明l 元素l 属性l 注释 l 实体引用及CDATA区 l 处理指令(PI:Processing Instruction)l Xml约束 1) 文档声明l 在
3、编写XML文档时,需要先使用文档声明来声明XML文档。且必须出现在文档的第一行。(前面注释都不允许) 最简单的语法:<?xml version=“1.0”?>l 用encoding属性说明文档所使用的字符编码。保存在磁盘上的文件编码要与声明的编码一致。 如:<?xml version=“1.0” encoding=“utf-8”?>l 用standalone属性说明文档是否独立,即是否依赖其他文档。 如:<?xml version=“1.0” encoding=“utf-8” standalone=“yes”?>2) 元素l XML元素指XML文件中出现的标
4、签。一个标签分为起始和结束标签(不能省略)。一个标签有如下几种书写形式:n 包含标签主体:<mytag>some content</mytag> n 不含标签主体:<mytag />(有时也叫空标签)n 一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套。n <mytag1><mytag2></mytag1></mytag2> l 一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签或孙标签。l 对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。
5、例如:下面两段内容的意义是不一样的。<网址> </网址><网址>ww.1000phone.copm</网址> -DOM解析l 由于在XML中,空格和换行都作为原始内容被处理,所以,在解析XML文件时要特殊处理下,绕过这些空格和换行符。l 元素命名规范:一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范n 区分大小写,例如,<A>和<a>是两个不同的标记。(与java、c变量命名一致)n 不能以数字或"_" (下划线)开头。n 不能以xml(或XML、或Xml 等)开头。(xm
6、l 为关键字,所以不能重复)n 不能包含空格。n 名称中间不能包含冒号(:)。n 一句话:像个正常人一样去写名称就行,不用关键字3) 属性l 一个元素可以有多个属性,每个属性都有它自己的名称和取值,例如:<mytag name=“value” />l 属性值一定要用引号(单引号或双引号)引起来。l 属性名称的命名规范与元素的命名规范相同l 元素中属性没有顺序要求,但是不准重复。l 在XML技术中,标签属性所代表的信息也可以被改成用子元素的形式来描述4) 注释l XML中的注释语法为:<!-这是注释->l 注意:l XML声明之前不能有注释(xml声明必须放在文档第一行)
7、l 注释不能嵌套5) 实体引用及CDATA区实体引用l 在 XML 中,一些字符拥有特殊的意义。如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。如下这样会产生 XML 错误:<message>if salary < 1000 then</message>l 为了避免此类错误,需要把字符 "<" 替换为实体引用,就像这样:<message>if salary < 1000 then</message>在 XML 中有 5 个预定义的
8、实体引用:< <小于>>大于&&和号''省略号""引号l 注意:严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。CDATA区术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。在 XML 元素中,"<" 和 "&" 是非法的。&q
9、uot;<" 会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。CDATA 部分中的所有内容都会被解析器忽略。CDATA 部分由 "<!CDATA" 开始,由 ">" 结束:6) 处理指令(了解即可)l 处理指令,简称PI(Processing Instr
10、uction)。l 作用:用来指挥软件如何解析XML文档。l 语法:必须以“<?”作为开头,以“?>”作为结尾。l 常用处理指令:n XML声明:<?xml version=“1.0” encoding=“GB2312”?>n xml-stylesheet指令:作用:指示XML文档所使用的CSS样式XSLT。7) XML约束(了解即可)为什么需要约束:l XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错。什么是XML约束:l 约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。l 在XML技术里,可以编写一个文档
11、来约束一个XML文档的书写规范,这称之为XML约束。l 常用的约束技术XML DTD, XML Schema l 作为普通工程师,一般是使用别人的约束文件,而不会自己去写约束。例如使用SSH框架开始时用到的xml文件,均要受框架的提供的xml的约束文件的约束3、 SAX解析XML解析方式主要有:DOM(文档对象模型):将整个文件以树的结构存储到内存中,适合小文件,程序可读性高。Dom4jSAX(基于事件流的解析):省内存,程序可读性相比上述较差。PULL(Android自带解析器):也是基于事件流的解析本次,我们只学习SAX和PULL两种方式正式来学习SAX解析Simple APIs for
12、XML,XML简单应用程序接口,在javax.xml.parsers包中,SAX解析是JDK自带的解析方式,包括一组接口和类1) SAX解析原理以事件驱动的方式解析,即找开始结束标签的方式SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。所以有两个关键点:顺序扫描,事件处理函数2) 案例:解析指定文件(标签无属性),并将文件中的信息存放到list中-需要先创建XML文件3) 案例:解析指定文件(根标签有属性),并将文件中的信息存放到l
13、ist中假设:我们给每个phone加一个id属性,那么在解析根节点的时候,就需要获取到id信息并赋值给对象。4、 PULL解析 在android系统中,很多资源文件中,很多都是xml格式,在android系统中解析这些xml的方式,是使用pul解析器进行解析的,它和sax解析一样,也是采用事件驱动进行解析的,同时,由于android内核已经内嵌了pull,所以我们不需要添加第三方的jar包来支持pull。1) 案例:解析XML文件(不带属性)首先,需要jar包:具体实现步骤如下:基本上跟sax的解析思路是一样的。几个关键的方法强调下:获取其状态码,区分现在是哪个事件源(文档开头,文档结尾,标签开头,标签结尾)获取标签名称获取标签的文本内容让指针继续往下解析下一个事件源2) 案例:解析XML文件(带属性)3) PU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年河北省衡水市冀州市三年级数学第一学期期末教学质量检测试题含解析
- 急性心肌梗死护理
- 水泥混凝土路面设计要点
- 简化学习计划以应对市政工程考试的策略试题及答案
- 中班下学期郊游活动课程设计
- 客户关系管理在公共关系中的重要性试题及答案
- 合作协议签署及执行流程规范
- 工程经济考试高频试题及答案
- 智能家居行业应用技术测试卷
- 纺织行业知识题库
- 2024年湖北省新华书店(集团)有限公司招聘笔试参考题库含答案解析
- 无人港口自动化吊车电控设计
- 邹氏宗亲联谊会通讯录美篇
- 数据清洗与预处理方案
- 马克思主义劳动观的中国化-新时代劳动思想
- 安措费清单完
- 平衡火罐的基本理论及临床应用
- 基于大数据的小学生“五育”并举评价之研究与实践
- 康复常见并发症评定
- (3.1)-7.1展望未来共产主义新社会
- 人工智能算法分析 课件 【ch07】联邦学习
评论
0/150
提交评论