xml语言基础---简单介绍讲解_第1页
xml语言基础---简单介绍讲解_第2页
xml语言基础---简单介绍讲解_第3页
xml语言基础---简单介绍讲解_第4页
xml语言基础---简单介绍讲解_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XML解析、XML基础1)什么是XMLwnl的作用: 存储数据 可用于跨甲台数据交Li(linux )址一飽放据资源:Window)jFXMLJtntxt又杵zhangn|20|13363534txt交件21WB webJl曲h框架 白nckEM配国文件(特点:存错内容少解折简单可圖i差)4 xmisn (特点:可彌輕,彌清晰存储内容梦解析麻烦v 5tudent5 studentszhang5an用encoding属性说明文档所使用的字符编码。保存在磁盘上的文件编码要 与声明的编码一致。女口: 用standalone属性说明文档是否独立,即是否依赖其他文档。女口: 2)兀素XML元素指XML文

2、件中出现的标签。一个标签分为起始和结束标签(不能省 略)。一个标签有如下几种书写形式:包含标签主体:some conten t不含标签主体:vmytag /(有时也叫空标签)一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套。vmytag1vmytag2v/mytag1x/mytag2一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签 或孙标签。对于XMLB签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的ww.lOOOph on e.copmww.1000phone.copm -DOM 解析由于在XML

3、中,空格和换行都作为原始内容被处理,所以,在解析XML文件时要特殊处理下,绕过这些空格和换行符。元素命名规范:一个XMLS素可以包含字母、数字以及其它一些可见字符, 但必须遵守下面的一些规范区分大小写,例如,和0是两个不同的标记。(与java、c变量命 名一致)不能以数字或_(下划线)开头。不能以xml(或XML或Xml等)开头。(xml为关键字,所以不能重复) 不能包含空格。名称中间不能包含冒号(:)。一句话:像个正常人一样去写名称就行,不用关键字3)属性一个元素可以有多个属性,每个属性都有它自己的名称和取值,例如:属性值一定要用引号(单引号或双引号)引起来。属性名称的命名规范与元素的命名规

4、范相同元素中属性没有顺序要求,但是不准重复。行处理。例如:下面两段内容的意义是不一样的 。ww.1000phone.copmww.1000phone.copm -DOM 解析由于在XML中,空格和换行都作为原始内容被处理,所以,在解析XML文件时要特殊处理下,绕过这些空格和换行符。元素命名规范:一个XMLS素可以包含字母、数字以及其它一些可见字符, 但必须遵守下面的一些规范区分大小写,例如,和0是两个不同的标记。(与java、c变量命 名一致)不能以数字或 _ ( 下划线)开头。不能以xml(或XML或Xml等)开头。(xml为关键字,所以不能重复) 不能包含空格。名称中间不能包含冒号( :

5、)。 一句话:像个正常人一样去写名称就行,不用关键字3)属性一个元素可以有多个属性, 每个属性都有它自己的名称和取值, 例如: 属性值一定要用引号 (单引号或双引号 )引起来。属性名称的命名规范与元素的命名规范相同元素中属性没有顺序要求,但是不准重复。&q uot;注意:严格地讲,在XML中仅有字符和&是非法的。省略号、引号 和大于号是合法的,但是把它们替换为实体引用是个好的习惯。CDATZ区术语CDATA指的是不应由XML解析器进行解析的文本数据(Un parsedCharacter Data )。在XML元素中,和&是非法的。会产生错误,因为解析器会把该字符解释为新元素的开始。&也会产生错

6、误,因为解析器会把该字符解释为字符实体的开始。某些文本,比如JavaScript代码,包含大量或&字符。为了避免错误, 可以将脚本代码定义为CDATACDATA部分中的所有内容都会被解析器忽略。CDATA部分由 结束:6)处理指令(了解即可)处理指令,简称 PI(Processing Instruction)。作用:用来指挥软件如何解析XML文档。语法:必须以“ ”作为结尾。常用处理指令:XML声明:xml-stylesheet 指令:作用:指示 XML文档所使用的CSS羊式XSLT7) XML约束(了解即可)为什么需要约束:XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获

7、 取文件中的内容而报错。什么是XML约束:约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。 在XML技术里,可以编写一个文档来约束一个 XML文档的书写规范,这称之 为XML约束。常用的约束技术 XML DTD, XML Schema作为普通工程师,一般是使用别人的约束文件,而不会自己去写约束。例如 使用SSHlf架开始时用到的xml文件,均要受框架的提供的xml的约束文件 的约束三、SAX解析XML解析方式主要有:DOM (文档对象模型):将整个文件以树的结构存储到内存中,适合小文件,程序可读性高。Dom4jDOMSAX (基于事件流的解析): 省内存,程序可读性相比上

8、述较差。PULL(Android自带解析器):也是基于事件流的解析本次,我们只学习SAX和PULL两种方式正式来学习SAX解析Simple APIs for XML , XML 简单应用程序接口,在 javax.xml.parsers包中,SAX 解析是JDK自带的解析方式,包括一组接口和类1)SAX解析原理以事件驱动的方式解析,即找开始结束标签的方式SAX的工作原理简单地说就是对文档进行 顺序扫描,当扫描到文档(document) 开始与结束、元素(element)开始与结束、等地方时通知事件处理函数,由事 件处理函数做相应动作,然后继续同样的扫描,直至文档结束。所以有两个关键点:顺序扫描,

9、事件处理函数2)案例:解析指定文件(标签无属性),并将文件中的信息存放到list中-需要先创建XML文件Jpubllc ClAdM JAXiIpublicveld main (St ring | j drgj) throw* PjuaerConfiiirat ion=:)tc-eptiorLrSAXKeepLion, roExpti on (U 2J5!SAKVfr az5AKPnrasxFactory factory -rFactory 1己*1710右血17& ;/ 別孙KofiSrSAXParsex pars*r - factory ;”廿 -i: - ,-; :r-/ jf !pars

10、er., parse (nw File ( non w -meII r handler) f|/矗甲睡舉Li a t phoxiea 二 hrsnd.Ler 专耳上匸丄赳 it ( j 常(Phoit-e p : phon3 J ( 呂 ya tens out ,p2rlnt n 彳尺乂Jpublic class MyHandler extends DefaultHandler private List li3t;privaString tag;private Phone phone;Overridepublic void startDocument() throws SAXException

11、 彳 f /初始化丄 list = new ArrayLi5t();Override*皐到开始标签* fpublic veld startELament(String uri, String localNamef String qNanierAttributes eittributes) throws SAXEKception H设遏当前正在解版的粽签,如果是对象悵标签.则Phone对象/有可遵斋竇垃置phfnE对魚的展性值虹决于phdiiE标益有没有属性Systwni. out .println (uiui ; + uri 1*, loaalt3ame:ff + loca iName + r

12、 qName: + qttame);tag = qName;if (phoneequals(tg)phone = new Phone();J0Overrj.depublic void endElement: (String uri, String lo-calN且nm $ String qName-) throws SAXException Systemi out. print In (uri :+ uri + localName :+ local Name 4- n j qName ;H- qNa.me| ;/妇甲孚h鱼银劳弓览束v/phonuA 将E舒胡農奸的phonw对意tuA刮1 +,

13、并聃teg = M ;if phone,equals(qName)1T lac-ftdd(phone);Override/ * *用于处理文本节点*/public void characters (char chjr int start, int length) throws SAXException /先组装字符串及完整的文本内容String content = new stringch, start, length);/判断是属于当前的哪个标签if (type亡珏口ala(tag)phone.3etType(content); else if ( prioe.equals(tag)phon

14、e.setPrice(Integer,prselnt(content); else if ( storerT 丄3 (tag) ) phone,setStore(Integer.parselnt(cont巳nt);public Li3t getList()return List;3)案例:解析指定文件(根标签有属性),并将文件中的信息存放到list 中假设:我们给每个phone加一个id属性,那么在解析根节点的时候,就需要获 取到id信息并赋值给对象。Ovftrr1 dppublic void artEltString uri f String 1 ocalNmin-, String qNmp

15、TAttributes attributes) throws SAXzxception t(ig qName; / ;录二F h-臺if (phone M.equaIs(tag) pkone new Phone );x (at七 Jribiite;3 != null) / 判斷是舌有厲囹for (int i = 0; i ;i (id11 equals (name) )1phone芒匚工;1卩乱丄u包);)/如果还有直怛属性,则事肓几个1四、PULL解析在an droid系统中,很多资源文件中,很多都是xml格式,在an droid系统中 解析这些xml的方式,是使用pul解析器进行解析的,它

16、和sax解析一样,也是 采用事件驱动进行解析的,同时,由于 an droid内核已经内嵌了 pull,所以我们 不需要添加第三方的jar包来支持pull。1)案例:解析XML文件(不带属性)越1首先,需要jar包:具体实现步骤如下:kxml2-2.2.2.jarpublicFullPorserTesTl tpublic: b t&txc void na in (Str i( J a匸书tiE&w JCmlFuLLPa cd=rEKeeptionfIOEitcctLl&n /创jtpuiitafr的工1对銀JCrn 1 Fli 1 IPs ra er Fa o-t a ry a ct o ry

17、=1 Pu: IParserFactory .n m wT t a nee ();/ eJBpullFSXnlPuLLParscr parser - factory,newPu LParsr ,/ / 拒宦啓理旳、Wrphnns d xmlparser* 5tInput(naw ftleREider(N phares.工ml * H;H强雇承绻曲濡玛,在幵苛细杆工寸禄在艳肮一近i nt event Type parser -Eve nt Type f;/ 诽环U!F.Liit list - null;Phor* null;while (eventType != XmlPullParser.EN

18、D_DOCUMENT) /获取正在解析的标签窖String tag = parser,getName();switch (eventType) case XmlPullParser * START_DOCUMEMT:List = new ArrayList(); break;case Xml PullParser * START_TAG: if (phone11 mguaA吕(teg) )phone = new Phone(); else if (ntypeK.equals(tag)/ p&.匸吕ei: * nExtT&Kt;():荻取标签中的文本内容 phone setType(parser

19、.nextText(); else if (price,T .equals (tag) )phone ” setPrice (Integer .parsein t (parser nextText (); else if (storeH equals(tag)phone * setstore(Integer.rselnt(parser.nextText(); break;case XmlPullParser.EMD TAGtif (phoneTT, equals (tag)list * add(phone);break;/继续住下禅析,获取下一个事伴我态码 eventType = parser * next();for (Phone p : List) System,out)phone new Phone();rr/社谆忏签1int count = parser

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论