




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XML解析、XML基础1)什么是XML(linux )xml的作用;1.存端数据RJ用于跨半台数据交旦轨一曲数齬资源:Window)JTXMLJtntKtXffzhangn|20| 1L 3363534 txt 文件2恢帼隨畀岌ssht&架androidSS文件特点:存错内容少-解析荷单,可读性差)semi交件(待点:uitm,郦清晰存储内容梦解析麻颌) 3tudents studentszhang$an 20XML是指可扩展标记语言(eXtensible Markup Language),它也是一种标记 语言,很类似HTML它被设计的宗旨是 存储数据,而非显示数据。Html展示数据XML标签
2、没有被预定义,需要用户自行定义标签。XML技术是 W3C组织(World Wide Web Consortium 万维网联盟)发布的,目前遵循的是 W3C组织于2000年发布的XML1.0规范。XML被广泛认为是继Java之后在In ternet上最激动人心的新技术。W3CSchool(入门级)2)XML常见应用用于数据存储用在软件配置,用于描述模块之间的关系(如果著名的 Struts、Spring和Hibernate都是基于XML作为配置文件的-SSH) an droid都是xml。图形界面都是用的xml在一个软件系统中,通过XML配置文件可以提高系统的灵活性。即程序的行为是通过XML文件来
3、配置的,而不是硬编码。XML是一种通用的数据交换格式。(跨平台)、XML语法语法较多,建议先直接上手写案例,成功之后再回来当回顾学习用 一个XML文件主要包括以下几个部分:文档声明属性注释实体引用及CDAT区处理指令(PI:Processing Instruction)Xml约束1)文档声明在编写XML文档时,需要先使用文档声明来声明 XML文档。且必须出现在文 档的第一行。(前面注释都不允许)最简单的语法:v?xml version=“ 1.0 ” ?用encoding属性说明文档所使用的字符编码。保存在磁盘上的文件编码要 与声明的编码一致。女口: 用standalone属性说明文档是否独立
4、,即是否依赖其他文档。女口: 2)兀素XML元素指XML文件中出现的标签。一个标签分为起始和结束标签(不能省 略)。一个标签有如下几种书写形式:包含标签主体:some conten t不含标签主体:vmytag /(有时也叫空标签)一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套。vmytag1vmytag2v/mytag1x/mytag2一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签 或孙标签。对于XMLB签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的ww.lOOOph on e.copmww
5、.1000phone.copm -DOM 解析由于在XML中,空格和换行都作为原始内容被处理,所以,在解析XML文件时要特殊处理下,绕过这些空格和换行符。元素命名规范:一个XMLS素可以包含字母、数字以及其它一些可见字符, 但必须遵守下面的一些规范区分大小写,例如,和0是两个不同的标记。(与java、c变量命 名一致)不能以数字或_(下划线)开头。不能以xml(或XML或Xml等)开头。(xml为关键字,所以不能重复) 不能包含空格。名称中间不能包含冒号(:)。一句话:像个正常人一样去写名称就行,不用关键字3)属性一个元素可以有多个属性,每个属性都有它自己的名称和取值,例如:属性值一定要用引号
6、(单引号或双引号)引起来。属性名称的命名规范与元素的命名规范相同元素中属性没有顺序要求,但是不准重复。在XML技术中,标签属性所代表的信息也可以被改成用子元素的形式来描述4)注释XML中的注释语法为:注意:XML声明之前不能有注释(xml声明必须放在文档第一行) 注释不能嵌套5)实体引用及CDATA区实体引用在XML中,些字符拥有特殊的意义。如果你把字符放在XML元素中,会发生错误,这是因为解析器会把它当作新元素的开始。如下这样会产生XML错误:if salary 1000 then h MHMia wLoa nawa * * * I为了避免此类错误,需要把字符替换为实体引用,就像这样:if
7、salary < 1000 then在XML中有5个预定义的实体引用:& it;>& amp;小于大于和号'省略号引号&q uot;注意:严格地讲,在XML中仅有字符和&是非法的。省略号、引号 和大于号是合法的,但是把它们替换为实体引用是个好的习惯。CDATZ区术语CDATA指的是不应由XML解析器进行解析的文本数据(Un parsedCharacter Data )。在XML元素中,和&是非法的。会产生错误,因为解析器会把该字符解释为新元素的开始。&也会产生错误,因为解析器会把该字符解释为字符实体的开始。某些文本,比如JavaScript代码,包含大量或&字符。为了避免
8、错误, 可以将脚本代码定义为CDATACDATA部分中的所有内容都会被解析器忽略。CDATA部分由 结束:6) 处理指令(了解即可)处理指令,简称 PI(Processing Instruction)。作用:用来指挥软件如何解析XML文档。语法:必须以“ ”作为结尾。常用处理指令:XML声明:xml-stylesheet 指令:作用:指示 XML文档所使用的CSS羊式XSLT7) XML约束(了解即可)为什么需要约束:XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获 取文件中的内容而报错。什么是XML约束:约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等
9、。 在XML技术里,可以编写一个文档来约束一个 XML文档的书写规范,这称之 为XML约束。常用的约束技术 XML DTD, XML Schema作为普通工程师,一般是使用别人的约束文件,而不会自己去写约束。例如 使用SSHlf架开始时用到的xml文件,均要受框架的提供的xml的约束文件 的约束三、SAX解析XML解析方式主要有:DOM (文档对象模型):将整个文件以树的结构存储到内存中,适合小文件,程序可读性高。Dom4jstudentsDOMstudentstudentSAX (基于事件流的解析):省内存,程序可读性相比上述较差。PULL( An droid自带解析器):也是基于事件流的解
10、析本次,我们只学习SAX和PULL两种方式正式来学习SAX解析Simple APIs for XML , XML 简单应用程序接口,在 javax.xml.parsers包中,SAX解析是JDK自带的解析方式,包括一组接口和类1)SAX解析原理以事件驱动的方式解析,即找开始结束标签的方式SAX的工作原理简单地说就是对文档进行 顺序扫描,当扫描到文档(document) 开始与结束、元素(element)开始与结束、等地方时通知事件处理函数,由事 件处理函数做相应动作,然后继续同样的扫描,直至文档结束。所以有两个关键点:顺序扫描,事件处理函数2)案例:解析指定文件(标签无属性),并将文件中的信息
11、存放到list中-需要先创建XML文件0Overrj.de/*1二岂耒一 I*/public void endElement (5 匸 ring urif string local Maine, string q?Jame) throws SAXException Systwm* 口ut-pu土nt丄n (uri : + ui 1 +* 丄clJraire :tl + localNane + u , zrNante十 qflame;/如果是对/phone.梅已魏粗装好的phonm对喩如扎SJllst中.共将尸“”tag =”;if (*phcj;e,dequals (qliaw) )list-
12、add(phone;0Overr i.de/*甲于处理文一本节直*/public void characterschar chj int start, int Length throws SAXException /先组装字符串及完整的文本內客String content - new String(chf start, length);/判斷是再尸兰i?射哪孑标蟲if (|Tt ypht . eqna Is (taq) J f phDue.setTyp巳(content); else if ( jLXicti equiLa (tag) )phone , set:Prce (Ini:eqer .
13、 paJn t (content); else if (store,equal3(tag)phon * tyLS OJL (InL.eyiL (c;t itri ntjSt r i ng! = null) /判新是否有属性|= 0; i attributesgetLength); i+)name = attribute * getQNane (i);value 二 attributes getValua (i);i (丄d equals name) ) I phone. aeLid (vsi丄tits);/如果还有其乜属准,则事写几牛四、PULL解析在an droid系统中,很多资源文件中,很
14、多都是xml格式,在an droid系统中 解析这些xml的方式,是使用pul解析器进行解析的,它和sax解析一样,也是 采用事件驱动进行解析的,同时,由于 an droid内核已经内嵌了 pull,所以我们 不需要添加第三方的jar包来支持pull。1)案例:解析XML文件(不带属性)首先,需要jar包:越kxml2-2.2.2.jar具体实现步骤如下:publicPul1PerserTesx1 (public sti&tia vohons - xral pa.ra&r sGtlnput (naw FileKeadB匚 t phones xml * H ; U覷趾尹吩岳志吗也幵超酣押卍姑茯云
15、挽凤一反丨航七 even t Type pcirser . et Eve nt Type f f/直至文鶯牌折蒂枣Llt LLat - nullph&ns null *&口七 eventType = parser获取标签名称String tag = parser.getName()*hiar获取标签的文本内容phonesetType(parser nextText(); ll III M让指针继续往下解析下一个事件源eventType = parser next();2)案例:解析XML文件(带属性)case XmlP口丄IPmrbeit . SIT!;?7 JTIiS: if (T,phan
16、e ; for (in七 i = Q: i hone 日EtTd (va 1 ue);I/站果有具吃毘性:一样们处理方一 ele if (type*equals (tag) )phone.setType(parser 口已科匸T巳赛七():if (price*1. equals (tag) phone ” set Price(Inseger.parsInt(parser.next Text(): else if ( 11 store* . equa 1 s (taqJ )phone aetStre (Integer .pftrselnt (pauser newtT巳耳t;();3)PULL v
17、s SAXPull解析器和SAX解析器虽有相似性但也有区别,他们的区别为:SAX解析器的工作方式是自动将事件推入注册的事件处理器进行处理,因此你不能控制 事件的处理主动结束;而 Pull解析器的工作方式为允许你的应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后 不再获取事件,结束解析。五、作业解析books.xml文件,分别采用pull和sax的方式,要求独立编写完成while (eventType ! = Xml PullFa rser EM匕DOULCW瓦Vf) /萩取丘在解析的标签名String tag = parser.getNme();switc
18、h (eventType) case XmlPllPiirser.TATWCLTlEAT: list = new ArrayList丈Phc*n已A t ); braa-k;case XmlPuJ1Psrser-TART_TAG;if (*phonG,r equals (tag)( phone = new FhonG();| else If (1Ttyper- .equals (tag)(/ / parser *next.Text ( i :註弧标耳中出文去内容phone.setType(parsernextText();1 els if (price* 1 equals tag) phone . setPr ice (Integer paise Jn t (parser nextText (); else if instore1 . eq口自.吉(t&写)phone . sets tore
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建福州市闽清县招聘乡镇社会救助协管员2人模拟试卷及答案详解(新)
- 2025湖北咸宁市通城城市发展建设投资(集团)有限公司第一期招聘模拟试卷及答案详解参考
- 2025广东广州市中山大学孙逸仙纪念医院肿瘤科放疗专科科研助理招聘1人模拟试卷及参考答案详解一套
- 2025安徽芜湖市第三城市医疗集团成员单位招聘编外人员15人考前自测高频考点模拟试题及答案详解(网校专用)
- 安全培训教学组织管理课件
- 2025年广东技术师范大学招聘辅导员40人考前自测高频考点模拟试题及答案详解(名校卷)
- 山西省【中职专业高考】2025年中职高考对口升学(理论考试)真题卷【装备制造大类】模拟练习
- 广德安全生产培训中心课件
- 2025福建厦门市思明区嘉莲街道办事处招聘非在编工作人员2人模拟试卷完整答案详解
- HK-2-IN-1-生命科学试剂-MCE
- 华为信息安全管理培训课件
- 诗经整本书阅读课件
- (2025年标准)预售小麦协议书
- 2025年院感测试题及答案
- 承包商全流程安全培训
- 养生店国庆节活动方案
- 古代文学史杜牧课件
- 全套教学课件《工程伦理学》
- 汽车机械基础(全套课件)
- 道路凿除及新做砼路面施工方案
- ISO50001-2018能源管理体系内审计划、记录及报告
评论
0/150
提交评论