第11章数据交换格式=创新教育基础与实践=大连理工大学.ppt

上传人:知****量 文档编号:91054987 上传时间:2023-05-21 格式:PPT 页数:39 大小:2.13MB
返回 下载 相关 举报
第11章数据交换格式=创新教育基础与实践=大连理工大学.ppt_第1页
第1页 / 共39页
第11章数据交换格式=创新教育基础与实践=大连理工大学.ppt_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《第11章数据交换格式=创新教育基础与实践=大连理工大学.ppt》由会员分享,可在线阅读,更多相关《第11章数据交换格式=创新教育基础与实践=大连理工大学.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、20 五月 2023第第11章数据交换格式章数据交换格式=创创新教育基础与实践新教育基础与实践=大连大连理工大学理工大学重点:重点:XML格式格式 1JSON格式格式 2读写读写XML的常用类的常用类 3JSON在在HTML中的应用中的应用 4难点:难点:XML格式格式 1读写读写XML的常用类的常用类 211.1 XML格式格式 vXml简介 vXml发展史 vXml的优点 vXml的标准结构vXml的实例 11.1 XML格式格式vXml简介什么是什么是XML:1.XML指可扩展标记语言指可扩展标记语言(ExtensibleMarkupLanguage)2.XML是一种是一种标记语言标记语

2、言,很类似,很类似HTML3.XML的设计宗旨是的设计宗旨是传输数据传输数据,而非显示数据,而非显示数据4.XML标签没有被预定义。您需要标签没有被预定义。您需要自行定义标签自行定义标签。5.XML被设计为具有被设计为具有自我描述性自我描述性。6.XML是是W3C的推荐标准的推荐标准11.1 XML格式格式vXml简介Xml与与HTML的主要差异的主要差异:1.XML不是不是HTML的替代。的替代。2.XML和和HTML为不同的目的而设计:为不同的目的而设计:3.XML被设计为传输和存储数据,其焦点是数据被设计为传输和存储数据,其焦点是数据的内容。的内容。4.HTML被设计用来显示数据,其焦点

3、是数据的被设计用来显示数据,其焦点是数据的外观。外观。5.HTML旨在显示信息,而旨在显示信息,而XML旨在传输信息旨在传输信息11.1 XML格式格式vXml发展史XML的前身是的前身是SGML(TheStandardGeneralizedMarkupLanguage),是自),是自IBM从从60年代就开始发展年代就开始发展的的GML(GeneralizedMarkupLanguage)同同HTML一样,一样,XML(可扩展标识语言可扩展标识语言)是通用标识语是通用标识语言标准言标准(SGML)的一个子集,它是描述网络上的数据内的一个子集,它是描述网络上的数据内容和结构的标准。尽管如此,容和

4、结构的标准。尽管如此,XML不象不象HTML,HTML仅仅提供了在页面上显示信息的通用方法仅仅提供了在页面上显示信息的通用方法(没有上下文没有上下文相关和动态功能相关和动态功能),XML则对数据赋予上下文相关功能,则对数据赋予上下文相关功能,它继承了它继承了SGML的大部分功能,却使用了不太复杂的技的大部分功能,却使用了不太复杂的技术。术。11.1 XML格式格式vXml的优点1.XML把数据从把数据从HTML分离分离2.XML简化数据共享简化数据共享3.XML简化数据传输简化数据传输4.XML简化平台的变更简化平台的变更5.XML使您的数据更有用使您的数据更有用6.XML用于创建新的用于创建

5、新的Internet语言语言11.1 XML格式格式vXml的标准结构因为因为XML是是W3C制定的,制定的,XML的标准化工作由的标准化工作由W3C的的XML工作组负责,该小组成员由来自各工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过个地方和行业的专家组成,他们通过email交交流对流对XML标准的意见,并提出自己的看法标准的意见,并提出自己的看法(www.w3.org/TR/WD-xml)。因为。因为XML是个公是个公共格式,共格式,(它不专属于任何一家公司它不专属于任何一家公司),你不必,你不必担心担心XML技术会成为少数公司的盈利工具,技术会成为少数公司的盈利工具,XM

6、L不是一个依附于特定浏览器的语言不是一个依附于特定浏览器的语言11.1 XML格式格式vXml的标准结构1.XML文件的第一行必须是声明该文件是文件的第一行必须是声明该文件是XML文文件以及它所使用的件以及它所使用的XML规范版本。在文件的前规范版本。在文件的前面不能够有其它元素或者注释。面不能够有其它元素或者注释。2.在在XML文件中有且只能够有一个根元素。我们文件中有且只能够有一个根元素。我们的第一个例子中,参考资料的第一个例子中,参考资料./参考资料参考资料就是此就是此XML文件的根元素文件的根元素。11.1 XML格式格式vXml的标准结构3.在在XML文件中的标记必须正确地关闭,也就

7、是文件中的标记必须正确地关闭,也就是说,在说,在XML文件中,控制标记必文件中,控制标记必须有与之对应须有与之对应的结束标记。如:名称标记必须有对应的的结束标记。如:名称标记必须有对应的/名称结束标记,不像名称结束标记,不像HTML,某些标记的,某些标记的结束标记可有可无。如果在结束标记可有可无。如果在XML文件中遇到自文件中遇到自成一个单元的标记,就是类似于成一个单元的标记,就是类似于HTML中的中的imgsrc=.的这些没有结束标记的时候,的这些没有结束标记的时候,XML把它称为把它称为“空元素空元素”,必须用这样的写法:,必须用这样的写法:空元素名空元素名/,如果元素中含有属性时写法则,

8、如果元素中含有属性时写法则为:空元素名为:空元素名属性名属性名=“属性值属性值”/。11.1 XML格式格式vXml的标准结构4.标记之间不得交叉。在以前的标记之间不得交叉。在以前的HTML文件中,可以这样写:文件中,可以这样写:BHXXXXXXX/B/H,B和和H标记之间有相互重叠的区域,而在标记之间有相互重叠的区域,而在XML中,是严格禁止这样标记交中,是严格禁止这样标记交错的写法,标记必须以规则性的次序来出现。错的写法,标记必须以规则性的次序来出现。5.属性值必须要用属性值必须要用“”号括起来。如第一个例子中的号括起来。如第一个例子中的“1.0”、“gb2312”、“人民币人民币”。都是

9、用。都是用“”号括起来了的,不能漏掉。号括起来了的,不能漏掉。6.控制标记、指令和属性名称等英文要区分大小写。与控制标记、指令和属性名称等英文要区分大小写。与HTML不同的不同的是,在是,在HTML中,中,类似类似B和和b的标记含义是一样的,而在的标记含义是一样的,而在XML中,类似中,类似name、NAME或或Name这样的标记是这样的标记是不同的。不同的。11.1 XML格式格式vXml的标准结构7.在在HTML文件中,如果要浏览器原封不动地将所输入的文件中,如果要浏览器原封不动地将所输入的东西显示出来,可以将这些东西放到东西显示出来,可以将这些东西放到pre/pre或者或者xmp/xmp

10、标记中间。这对于创建标记中间。这对于创建HTML教学的网页是必不可少的,因为网页中要显示教学的网页是必不可少的,因为网页中要显示HTML的的源代码。而在源代码。而在XML中,要实现这样的功能,就必须使中,要实现这样的功能,就必须使用用CDATA标记。标记。8.XML处理空白字符和处理空白字符和HTML不一样。不一样。HTML标准规定,标准规定,不管有多少个空白,都当作一个空白来处理不管有多少个空白,都当作一个空白来处理;而在而在XML中规定,所有标记以外的空白,解析器都要忠实地交中规定,所有标记以外的空白,解析器都要忠实地交给下游的应用程序处理。这样,有时必须摒弃编写给下游的应用程序处理。这样

11、,有时必须摒弃编写HTML文件时的缩排习惯,因为缩排的空格,解析器也文件时的缩排习惯,因为缩排的空格,解析器也要处理要处理。11.1 XML格式格式vXml的标准结构符合上述规定的符合上述规定的XML文件就是文件就是Well-Formed的的XML文件。这是编写文件。这是编写XML文件的最基本要求。文件的最基本要求。可以看到可以看到XML文件的语法规定比文件的语法规定比HTML要严格要严格多了。由于有这样的严格规定,软件工程师编多了。由于有这样的严格规定,软件工程师编写写XML的解析器就容易多了,不像编写的解析器就容易多了,不像编写HTML语言的解析器,必须费尽心思去适应不同的网语言的解析器,

12、必须费尽心思去适应不同的网页写法,提高自己浏览器的适应能力。实际上,页写法,提高自己浏览器的适应能力。实际上,这对于我们初学者来说,也是一件好事。该怎这对于我们初学者来说,也是一件好事。该怎样就怎样,不必像原来那样去疑惑各种样就怎样,不必像原来那样去疑惑各种HTML的写法。的写法。11.1 XML格式格式vXml的实例11.1 XML格式格式11.2 JSON格式格式 vJson 的定义vJson构建的结构vJson的具体形式vJson与Xml的比较vJson实例11.2 JSON格式格式vJson 的定义JSON(JavaScriptObjectNotation)是一种轻是一种轻量级的数据交

13、换格式。易于人阅读和编写。同量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于时也易于机器解析和生成。它基于JavaScript(StandardECMA-2623rdEdition-December1999)的一个子集。)的一个子集。JSON采用完全独立于语言的文本格式,但是采用完全独立于语言的文本格式,但是也使用了类似于也使用了类似于C语言语言家族的习惯(包括家族的习惯(包括C,C+,C#,Java,JavaScript,Perl,Python等)。这些特性使等)。这些特性使JSON成为理想的数据交换成为理想的数据交换语言。语言。11.2 JSON格式格式vJson构建

14、的结构1.“名称名称/值值”对的集合(对的集合(Acollectionofname/valuepairs)。不同的语言中,它被理解为对象()。不同的语言中,它被理解为对象(object),),纪录(纪录(record),结构(),结构(struct),),字典字典(dictionary),),哈希表哈希表(hashtable),有键列表),有键列表(keyedlist),或者关联),或者关联数组数组(associativearray)。)。2.值的有序列表(值的有序列表(Anorderedlistofvalues)。在大部)。在大部分语言中,它被理解为数组(分语言中,它被理解为数组(array

15、)。)。这些都是常见的这些都是常见的数据结构数据结构。事实上大部分现代。事实上大部分现代计算机计算机语语言都以某种形式支持它们。这使得一种数据格式在同言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的样基于这些结构的编程编程语言之间交换成为可能。语言之间交换成为可能。11.2 JSON格式格式vJson的具体形式1、对象是一个无序的、对象是一个无序的“名称名称/值值对对”集合。一个集合。一个对象以对象以“”(左括号)开始,(左括号)开始,“”(右括号)结(右括号)结束。每个束。每个“名称名称”后跟一个后跟一个“:”(冒号);(冒号);“名称名称/值值对对”之间使用之间使用“,”(逗

16、号)分隔。(逗号)分隔。11.2 JSON格式格式vJson的具体形式2.数组是值(数组是值(value)的有序集合。一个数组以)的有序集合。一个数组以“”(左中括号)开始,(左中括号)开始,“”(右中括号)结束。(右中括号)结束。值之间使用值之间使用“,”(逗号)分隔。(逗号)分隔。11.2 JSON格式格式vJson的具体形式3、值(、值(value)可以是双引号括起来的字符串)可以是双引号括起来的字符串(string)、数值)、数值(number)、true、false、null、对象(、对象(object)或者数组()或者数组(array)。这)。这些结构可以嵌套。些结构可以嵌套。11

17、.2 JSON格式格式vJson的具体形式4、字符串(、字符串(string)是由双引号包围的任意数量)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符的集合,使用反斜线转义。一个字符(字符(character)即一个单独的字符串)即一个单独的字符串(characterstring)。)。字符串(字符串(string)与)与C或者或者Java的字符串非常相的字符串非常相似。似。11.2 JSON格式格式vJson的具体形式5、数值(、数值(number)也与)也与C或者或者Java的数值非常的数值非常相似。除去未曾使用的八进制与十六进制格式。相似。除去未曾使用的八进制

18、与十六进制格式。除去一些编码细节。除去一些编码细节。11.2 JSON格式格式Json与与Xml的比较的比较可读性可读性JSON和和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。很难分出胜负。可扩展性可扩展性XML天生有很好的扩展性,天生有很好的扩展性,JSON当然也有,没有什么是当然也有,没有什么是XML能扩展,能扩展,JSON不能的。不能的。不过不过JSON在在Javascript主场作战,可以存储主场作战,可以存储Javascript复合对象,有着复合对象,有着xml不可不可比拟的优势。比拟

19、的优势。编码难度编码难度XML有丰富的编码工具,比如有丰富的编码工具,比如Dom4j、JDom等,等,JSON也有也有json.org提供的工具。提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和文档和JSON字符串,不过,字符串,不过,xml文档要多很多结构上的字符。文档要多很多结构上的字符。解码难度解码难度XML的解析得考虑子节点父节点,而的解析得考虑子节点父节点,而JSON的解析难度几乎为的解析难度几乎为0。11.2 JSON格式格式vJson实例XML和和JSON都使用结构化方法来标记数据,下面来做一

20、都使用结构化方法来标记数据,下面来做一个简单的比较。个简单的比较。现假设有一个用户数据包括:用户名、密码、所在部现假设有一个用户数据包括:用户名、密码、所在部门、性别、年龄。门、性别、年龄。用用XML表示如下:表示如下:张三张三123456技术部技术部男男3011.2 JSON格式格式vJson实例用用JSON表示如下:表示如下:name:张三张三,password:123456,department:技术部技术部,sex:男男,old:30与与XML一样,一样,JSON也是基于文本的,且它们都使用也是基于文本的,且它们都使用Unicode编码,同样具有可读性。编码,同样具有可读性。XML比较

21、适合于标比较适合于标记文档,而记文档,而JSON却更适合于时行数据交换处理。却更适合于时行数据交换处理。11.3 读写读写XML的常用类的常用类在java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB vDOM vSAX vJDOM vJAXB 11.3 读写读写XML的常用类的常用类vDOM(Document Object Model)此方法主要由W3C提供,它将xml文件全部读入内存中,然后将各个元素组成一棵数据树,以便快速的访问各个节点。因此非常消耗系统性能,对比较大的文档不适宜采用DOM方法来解析。DOM API 直接沿袭了 XML 规范。每个结点都可以扩展的

22、基于 Node 的接口,就多态性的观点来讲,它是优秀的,但是在 Java 语言中的应用不方便,并且可读性不强。11.3 读写读写XML的常用类的常用类vDOM(Document Object Model)/下面是建立下面是建立XML文档内容的过程,先建立根元素文档内容的过程,先建立根元素学生花名册学生花名册“Elementroot=doc.createElement(学生花名册学生花名册);/根元素添加上文档根元素添加上文档doc.appendChild(root);/建立建立学生学生元素,添加到根元素元素,添加到根元素Elementstudent=doc.createElement(学生学生

23、);student.setAttribute(性别性别,studentBean.getSex();root.appendChild(student);/建立建立姓名姓名元素,添加到学生下面,下同元素,添加到学生下面,下同Elementname=doc.createElement(姓名姓名);student.appendChild(name);TexttName=doc.createTextNode(studentBean.getName();name.appendChild(tName);11.3 读写读写XML的常用类的常用类vSAX(Simple API for XML)此方法主要由此方法

24、主要由XML-DEV邮件列表的成员开发的,邮件列表的成员开发的,SAX是是基于事件的方法,它很类似于标签库的处理机制,在基于事件的方法,它很类似于标签库的处理机制,在标签开始、结束以及错误发生等等地方调用相应的接标签开始、结束以及错误发生等等地方调用相应的接口实现方法,不是全部文档都读入内存。口实现方法,不是全部文档都读入内存。SAX具有优具有优异的性能和利用更少的存储空间特点。异的性能和利用更少的存储空间特点。SAX的设计只的设计只考虑了功能的强大性,却没有考虑程序员使用起来是考虑了功能的强大性,却没有考虑程序员使用起来是否方便。否方便。使用必须扩展使用必须扩展ContentHandler、

25、ErrorHandler、DTDHandler等,但是必须扩展等,但是必须扩展ContentHandler(或(或者者DefaultHandler)。)。11.3 读写读写XML的常用类的常用类vSAX(Simple API for XML)取得元素数据的方法取得元素数据的方法characters取得元素数据中的空白的方法取得元素数据中的空白的方法ignorableWhitespace在解析到处理指令时调用的方法在解析到处理指令时调用的方法processingInstruction当未验证解析器忽略实体时调用的方法当未验证解析器忽略实体时调用的方法skippedEntity运行时,只需要使用下

26、列代码:运行时,只需要使用下列代码:MySAXParsermySAXParser=newMySAXParser();mySAXParser.parserXMLFile(SutInfo.xml);11.3 读写读写XML的常用类的常用类vJDOMJDOM的处理方式有些类似于的处理方式有些类似于DOM,但它主要,但它主要是用是用SAX实现的实现的。JDOM用用Java的数据类型来的数据类型来定义操作数据树的各个节点定义操作数据树的各个节点。JDOM的性能也的性能也很优越。很优越。11.3 读写读写XML的常用类的常用类vJAXB(Java And XML Binding)JAXB是以是以SUN为主

27、的一些公司公布的。为主的一些公司公布的。JAXB将将schema(或者(或者DTD)映射为)映射为java对象(对象(.java文件),文件),然后使用这些然后使用这些java对象来解析对象来解析xml文件。需要使用之前文件。需要使用之前生成生成java文件,因而要有固定的文件,因而要有固定的schema,无法处理动,无法处理动态的态的xml文件。文件。11.4 JSON在在HTML中的应用中的应用 vJSON在HTML中的应用json是是javascript面向对象语法的一个子集。由于面向对象语法的一个子集。由于json是是javascript的一个子集,因此它可清晰的运用于此语言的一个子集

28、,因此它可清晰的运用于此语言中。中。varmyjsonobject=bindings:ircevent:privmsg,method:newuri,regex:http:/.*,ircevent:privmsg,method:deleteuri,regex:delete.*,ircevent:privmsg,method:randomuri,regex:random.*;11.4 JSON在在HTML中的应用中的应用vJSON在HTML中的应用上面的示例,创建了一个包括单独成员上面的示例,创建了一个包括单独成员”bindings”的对的对象,此成员包括一个含有三个对象(象,此成员包括一个含有三

29、个对象(”ircevent”,“method”,与与“regex”)的数组)的数组成员可以通过成员可以通过.或者下标操作符检索。或者下标操作符检索。myjsonobject.bindings0.method/newuri11.4 JSON在在HTML中的应用中的应用vJSON在HTML中的应用为了将json文本转换为对象,可以使用eval()函数。eval()函数调用javascript编辑器。由于json是javascript的子集,因此编译器将正确的解析文本并产生对象结构。文本必须括在括号中避免产生javascript的语法歧义。var myobject=eval(+myjsontext+

30、);11.4 JSON在在HTML中的应用中的应用vJSON在HTML中的应用eval函数非常快速。它可以编译执行任何函数非常快速。它可以编译执行任何javascript程序,程序,因此产生了安全性问题。当使用可信任与完善的源代因此产生了安全性问题。当使用可信任与完善的源代码时才可以使用码时才可以使用eval函数。这样可以更安全的使用函数。这样可以更安全的使用json解析器。使用解析器。使用xmlhttprequest的的web应用,页面应用,页面之间的通讯只允许同源,因此是可以信任的。但这却之间的通讯只允许同源,因此是可以信任的。但这却不是完善的。如果服务器没有严谨的不是完善的。如果服务器没

31、有严谨的json编码,或者编码,或者没有严格的输入验证,那么可能传送包括危险脚本的没有严格的输入验证,那么可能传送包括危险脚本的无效无效json文本。文本。eval函数将执行恶意的脚本。函数将执行恶意的脚本。使用使用json解析器可以防止此类事件。解析器可以防止此类事件。json解析器只能解析器只能辨识辨识json文本,拒绝所有脚本。提供了本地文本,拒绝所有脚本。提供了本地json支持支持的浏览器的的浏览器的json解析器将远快于解析器将远快于eval函数。函数。11.4 JSON在在HTML中的应用中的应用vJSON在HTML中的应用JSON解析和系列化功能,解析和系列化功能,JSON官方网站是提官方网站是提供了官方的供了官方的Java实现的(实现的(org.json)。)。此外,目前已有很多成熟的此外,目前已有很多成熟的JSON解析器。解析器。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁