XML学习
1、XML是一种数据格式语言,在很多地方都用到,最常见的有:用到传输数据作为数据的统一格式,作为配置文件等等;
2、因为XML利用标签来标记数据,理论上标签可以是任何形式,但是有时场合需要规定标签的集合,这就是DTDSCHEMA所描述的;DTD和SCHEMAD都是用于描述规则的。 3、得到XML数据之后,需要得到里面的数据,这就需要到DOMSAXSTAX,用来解析XML中的数据的技术; 比如平时所见的网页HTML,其实就是XML的一种特例,专门用于web服务器和浏览器之间通信的数据,如下图,横线就是DTD文件,描述了全部HTML的标签SCHEMA 1.xml是什么?
2.XML用来干什么?说说你了解的xml技术及其应用? 用来传输和存储数据。 1.用xml分离数据,数据单独放在xml中,集中精力更好的完成html的数据显示和布局,方便维护.
2.xml可以作为商业系统之间交换金融信息所使用的语言. 3.交换数据,用xml可以减少交换数据的复杂性. 4.xml可以用来共享数据.因为xml无关于硬件和软件. 5.xml可以充分的利用数据. 6.可以用于创建新语言,xml是WML语言的母亲,WML无线标记语言,用于标识运行于手持设备上的internet程序.
3.xml和html的区别? XML与HTML的比较
1.设计上的区别,xml用来存储数据,重在数据本身,HTML用来定义数据,重在数据的显示模式. 2.xml可扩展性强,因为他本身就是可扩展性标记语言,可创建个性化的标记语言,提供更多数据操作 3.xml语法比HTML严格. a.起始标签和结束标签要匹配, b.嵌套标签不能互相嵌套. c.区分大小写. d.xml属性值必须放在引号中,html可有可无. e.xml必须有相应的值,但html可以有不带值的属性名.
4、xml有哪些解析技术?区别是什么?
有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问 STAX:StreamingAPIforXML(StAX) (1)文件对象模型(Document Object Model,简称DOM):
DOM的优势主要表现在:易用性强,使用DOM时,
将把所有的XML文档信息都存于内存中,并且遍历简单,支持XPath,增强了易用性。
DOM的缺点主要表现在:效率低,解析速度慢,内存占用量过高,对于大文件来说几乎不可能使用。另外效率低还表现在大量的消耗时间,因为使用DOM进行解析时,将为文档的每个element、attribute、processing-instrUCtion和comment都创建一个对象,这样在DOM机制中所运用的大量对象的创建和销毁无疑会影响其效率。
(2)SAX:Simple API for XML(简称SAX)是个顺序存取XML的解析器API。SAX提供一个机制从XML文件读取资料。它是除了文档对象模型(DOM)的另外一种流行选择。
SAX解析器在某些方面优于DOM风格解析器。SAX解析器的内存使用量一般远低于DOM解析器使用量。DOM解析器在任何处理开始之前,必须把整棵树放在内存,所以DOM解析器的内存使用量完全根据输入资料的大小。相对来说,SAX解析器的内存内容,是只基于XML档案的最大深度(XML树的最大深度)和单一XML项目上XML属性储存的最大资料。这两个总是比整颗解析树本身还小。 因为SAX事件驱动的本质,处理文件通常会比DOM风格的解析器快。内存存取耗时,所以DOM较大的内存使用也是一个效能议题。 因为SAX的本质,从磁盘串流读取是可行的。无法放入内存的XML文件只可能使用SAX解析器(或另外的串流XML解析器)来处理。 SAX事件驱动的模型对于XML解析很有用,但它确实有某些缺点。某些种类的XML验证需要存取整份文件。例如,一个DTDIDREF属性需要文件内有项目使用指定字串当成DTD ID属性。要在SAX解析器内验证,必须追踪每个之前遇过的ID和IDREF属性,检查是否有任何相符。更甚者,一个IDREF找不到对应的ID,使用者只会在整份文件都解析完后才发现,若这种连结对于建立有效输出是重要的,那用在处理整份文件的时间只是浪费。 另外,某些XML处理仅要求存取整份文件。举例来说,XSLT及XPath需要能够任何时间存取任何解析过的XML树。当SAX以用来建构此树时,DOM解析器在设计上已经是如此了。 (3)STAX:XML流API(Streaming API for XML,缩写StAX)是用于读写XML文档的应用程序接口,
两者皆有优点,前者(例如DOM)允许对文档进行随机访问,而后者(例如SAX)需要较小的内存开销,并却通常更快。 这两个方法可以认为是正好相反。基于树的API允许无限制的,随机的访问和操纵,而基于事件的API是一次性地遍历源文档。 StAX被设计为这两者的一个折中。在StAX中,程序的切入点是表示XML文档中一个位置的光标。应用程序在需要时向前移动光标,从解析器拉出信息。与基于事件的API(如SAX)将“数据推送”给应用程序不同的是,SAX需要应用程序维持时间间的状态,以保持文档内的位置信息。 5、你在项目中用到了xml技术的哪些方面?谈谈你都在哪些项目中接触到? 答:用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。 6、XML文档定义有几种形式?它们之间有何本质区别? a:两种形式DTD(文档类型定义) XML schema, b:本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,STAX等
DTD 有四个组成如下:
由于 DTD 限制较多,使用时较不方便,近来已渐被XML Schema所取代。
Schema是用于描述和规范XML文档的逻辑结构的一种语言,它最大的作用就是验证XML文件逻辑结构的正确性。
XML Schema是以XML语言为基础的,它用于可替代DTD。
一份XML schema文件描述了XML文档的结构。
XML Schema语言也被称为XML Schema Definition (XSD)(XML Schema定义)。
XML Schema的作用是定义一份XML文档的合法组件群,就像DTD的作用一样,一份XML Schema:
定义了可以出现在文档里的元素 ;
定义了可以出现在文档里的属性 ;
定义了哪些元素是子元素 ;
定义了子元素的顺序 ;
定义了子元素的数量 ;
定义了一个元素应是否能包含文本,或应该是空的 ;
定义了元素和属性的
数据类型;
定义了元素和属性的默认值和固定值 ;
7.找出语法错误并改正: (1)、 <?xmlversion="1.0"encoding="GBK"?> <root> <ywdm>JSPJK_FX_JSP</ywdm> <ywmc>初始发行</ywmc> <params> <!--String长度15、17、20--> <paramname="nsrsbh">11010180010177999</param> <!--String长度80字符--> <paramname="qymc">15位测试用户</param> <paramname="lock">N</param> <paramname="pzsq"> <paramdataname="pzsqdm">008</paramdata> <!--String长度10字符范围:0到99999999.99--> <paramdataname="dzkpje">3333.1</paramdata> <!--String长度10字符范围:0到99999999.99--> <paramdataname="yljkpje">55555.2</paramdata> <!--String长度10字符范围:0到99999999.99--> <paramdataname="yljtpje">66666.3</paramdata> <paramdataname="szsmsl"> <szsmslsl="0.030">010101</szsmsl> <szsmslsl="0.040">010102</szsmsl> </paramdata> </Param>应该为:param> <paramname="pzsq"> <paramdataname="pzsqdm">036</paramdata> <!--String长度10字符范围:0到99999999.99--> <paramdataname="dzkpje">7777.11</paramdata> <!--String长度10字符范围:0到99999999.99--> <paramdataname="yljkpje">88888.22</paramdata> <!--String长度10字符范围:0到99999999.99--> <paramdataname="yljtpje">99999.33</paramdata> <paramdataname="szsmsl"> <szsmslsl="0.050">010103</szsmsl> <szsmslsl="0.060">010104</szsmsl> </paramdata> </param> <paramname="hysqsl">2</param> <paramname="hysq">行业授权 <!--6位编码,例如:010101--> <paramdataname="hysqbm">010101</paramdata> <paramdataname="hysqmc">行业授权1</paramdata> <paramdataname="hysqbm">010102</paramdata> <paramdataname="hysqmc">行业授权2</paramdata> </param> <paramname="ssq">20121030</param> </params> </root> (2)<?xmlversion="1.0"encoding="GBK"?> <root> <ywdm>JSPJK_GY_BSPH</ywdm> <ywdm>JSPJK_GY_BSPH</ywdm> <ywmc>读报税盘号</ywmc> </root> (3) <?xmlversion="1.0"encoding="UTF-8"?> <root> <ywdm>JSPJK_GY_JSP_TIME</ywmc> <ywdm>公用,读金税盘当前时间</ywmc> 应该为: <ywdm>JSPJK_GY_JSP_TIME</ywdm> <ywmc>公用,读金税盘当前时间</ywmc> </root> 8.以下是小规模发票发售的接口使用的XML <?xmlversion="1.0"encoding="GBK"?><root> <ywdm>JSPJK_GP</ywdm><ywmc>发票发售</ywmc> <params> <paramname="nsrsbh">11010180010177999</param> <paramname="jsph">8710011480</param><!--本次购票的金税盘号--> <paramxh="1"> <fpdm>111011238806</fpdm> <fphm>00030001</fphm> <sl>1000</sl> <fpzl>008</fpzl> </param> <paramxh="2"> <fpdm>111011158806</fpdm> <fphm>00003001</fphm> <sl>1000</sl> <fpzl>032</fpzl> </param> <paramname="kpxe">9</param> <paramname="fssj">20120612121212</param> </params> </root> 若想购买4卷发票(发票种类不限),请在上面的xml中进行添加。 <?xmlversion="1.0"encoding="GBK"?><root> <ywdm>JSPJK_GP</ywdm><ywmc>发票发售</ywmc> <params> <paramname="nsrsbh">11010180010177999</param> <paramname="jsph">8710011480</param><!--本次购票的金税盘号--> <paramxh="1"> <fpdm>111011238806</fpdm> <fphm>00030001</fphm> <sl>1000</sl> <fpzl>008</fpzl> </param> <paramxh="2"> <fpdm>111011158806</fpdm> <fphm>00003001</fphm> <sl>1000</sl> <fpzl>032</fpzl> </param> <paramname="kpxe">9</param> <paramname="fssj">20120612121212</param> </params> <paramxh="2"> <fpdm>111011158806</fpdm> <fphm>00003001</fphm> <sl>1000</sl> <fpzl>032</fpzl> </param> <paramname="kpxe">9</param> <paramname="fssj">20120612121212</param> </params> <paramxh="2"> <fpdm>111011158806</fpdm> <fphm>00004001</fphm> <sl>1000</sl> <fpzl>032</fpzl> </param> <paramxh="3"> <fpdm>111011228806</fpdm> <fphm>01000001</fphm> <sl>1000</sl> <fpzl>033</fpzl> </param> <paramxh="4"> <fphm>00000001</fphm> <fpzl>036</fpzl> </param> <paramname="kpxe">9</param> <paramname="fssj">20120612121212</param> </params> </root>
extensible markup language
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |