版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第11章 數(shù)據(jù)交換格式孫燾.重點(diǎn):XML格式 1JSON格式 2讀寫(xiě)XML的常用類 3JSON在HTML中的運(yùn)用 4難點(diǎn):XML格式 1讀寫(xiě)XML的常用類 211.1 XML格式 Xml簡(jiǎn)介 Xml開(kāi)展史 Xml的優(yōu)點(diǎn) Xml的規(guī)范構(gòu)造Xml的實(shí)例 11.1 XML格式Xml簡(jiǎn)介什么是 XML:1.XML 指可擴(kuò)展標(biāo)志言語(yǔ)(Extensible Markup Language) 2.XML 是一種標(biāo)志言語(yǔ),很類似 HTML3.XML 的設(shè)計(jì)目的是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)4.XML 標(biāo)簽沒(méi)有被預(yù)定義。您需求自行定義標(biāo)簽。5.XML 被設(shè)計(jì)為具有自我描畫(huà)性。6.XML 是W3C 的引薦規(guī)范11.1
2、XML格式Xml簡(jiǎn)介Xml與 HTML 的主要差別:1.XML 不是 HTML 的替代。2.XML 和 HTML 為不同的目的而設(shè)計(jì):3.XML 被設(shè)計(jì)為傳輸和存儲(chǔ)數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的內(nèi)容。4.HTML 被設(shè)計(jì)用來(lái)顯示數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的外觀。5.HTML 旨在顯示信息,而 XML 旨在傳輸信息11.1 XML格式Xml開(kāi)展史XML的前身是SGMLThe Standard Generalized Markup Language,是自IBM從60年代就開(kāi)場(chǎng)開(kāi)展的GMLGeneralized Markup Language同HTML一樣, XML (可擴(kuò)展標(biāo)識(shí)言語(yǔ))是通用標(biāo)識(shí)言語(yǔ)規(guī)范(SGML)的
3、一個(gè)子集,它是描畫(huà)網(wǎng)絡(luò)上的數(shù)據(jù)內(nèi)容和構(gòu)造的規(guī)范。雖然如此,XML不象HTML,HTML僅僅提供了在頁(yè)面上顯示信息的通用方法(沒(méi)有上下文相關(guān)和動(dòng)態(tài)功能) ,XML那么對(duì)數(shù)據(jù)賦予上下文相關(guān)功能,它承繼了SGML的大部分功能,卻運(yùn)用了不太復(fù)雜的技術(shù)。 11.1 XML格式Xml的優(yōu)點(diǎn)1.XML 把數(shù)據(jù)從 HTML 分別2. XML 簡(jiǎn)化數(shù)據(jù)共享3. XML 簡(jiǎn)化數(shù)據(jù)傳輸4. XML 簡(jiǎn)化平臺(tái)的變卦5. XML 使您的數(shù)據(jù)更有用6. XML 用于創(chuàng)建新的 Internet 言語(yǔ)11.1 XML格式Xml的規(guī)范構(gòu)造 由于XML是W3C制定的,XML的規(guī)范化任務(wù)由W3C的XML任務(wù)組擔(dān)任,該小組成員由來(lái)自
4、各個(gè)地方和行業(yè)的專家組成,他們經(jīng)過(guò)email交流對(duì)XML規(guī)范的意見(jiàn),并提出本人的看法 (/TR/WD-xml)。由于XML 是個(gè)公共格式, (它不專屬于任何一家公司),他不用擔(dān)憂XML技術(shù)會(huì)成為少數(shù)公司的盈利工具,XML不是一個(gè)依靠于特定閱讀器的言語(yǔ) 11.1 XML格式Xml的規(guī)范構(gòu)造1.XML文件的第一行必需是聲明該文件是XML文件以及它所運(yùn)用的XML規(guī)范版本。在文件的前面不可以有其它元素或者注釋。2.在XML文件中有且只可以有一個(gè)根元素。我們的第一個(gè)例子中,參考資料. /參考資料就是此XML文件的根元素。 11.1 XML格式Xml的規(guī)范構(gòu)造3.在XML文件中的標(biāo)志必需正確地封鎖,也就是
5、說(shuō),在XML文件中,控制標(biāo)志必 須有與之對(duì)應(yīng)的終了標(biāo)志。如:稱號(hào)標(biāo)志必需有對(duì)應(yīng)的/稱號(hào)終了標(biāo)志,不像HTML,某些標(biāo)志的終了標(biāo)志可有可無(wú)。假設(shè)在XML文件中遇到自成一個(gè)單元的標(biāo)志,就是類似于HTML 中的img src=.的這些沒(méi)有終了標(biāo)志的時(shí)候,XML把它稱為“空元素,必需用這樣的寫(xiě)法:空元素名/,假設(shè)元素中含有屬性時(shí)寫(xiě)法那么為:空元素名 屬性名=“屬性值/。 11.1 XML格式Xml的規(guī)范構(gòu)造4.標(biāo)志之間不得交叉。在以前的HTML文件中,可以這樣寫(xiě):BHXXXXXXX/B/H,B和H標(biāo)志之間有相互重疊的區(qū)域,而在XML中,是嚴(yán)厲制止這樣標(biāo)志交錯(cuò)的寫(xiě)法,標(biāo)志必需以規(guī)那么性的次序來(lái)出現(xiàn)。5.
6、屬性值必需求用“ 號(hào)括起來(lái)。如第一個(gè)例子中的“1.0、“gb2312、“人民幣。都是用“ 號(hào)括起來(lái)了的,不能漏掉。6.控制標(biāo)志、指令和屬性稱號(hào)等英文要區(qū)分大小寫(xiě)。與HTML不同的是,在HTML中, 類似B和b的標(biāo)志含義是一樣的,而在XML中,類似name、NAME或Name這樣的標(biāo)志是不同的。11.1 XML格式Xml的規(guī)范構(gòu)造7.在HTML文件中,假設(shè)要閱讀器原封不動(dòng)地將所輸入的東西顯示出來(lái),可以將這些東西放到pre/pre或者xmp/xmp標(biāo)志中間。這對(duì)于創(chuàng)建HTML教學(xué)的網(wǎng)頁(yè)是必不可少的,由于網(wǎng)頁(yè)中要顯示HTML的源代碼。而在XML中,要實(shí)現(xiàn)這樣的功能,就必需運(yùn)用CDATA標(biāo)志。 8.
7、XML處置空白字符和HTML不一樣。HTML規(guī)范規(guī)定,不論有多少個(gè)空白,都當(dāng)作一個(gè)空白來(lái)處置;而在XML中規(guī)定,一切標(biāo)志以外的空白,解析器都要忠實(shí)地交給下游的運(yùn)用程序處置。這樣,有時(shí)必需摒棄編寫(xiě)HTML文件時(shí)的縮排習(xí)慣,由于縮排的空格,解析器也要處置 。11.1 XML格式Xml的規(guī)范構(gòu)造符合上述規(guī)定的XML文件就是Well-Formed的XML文件。這是編寫(xiě)XML文件的最根本要求??梢钥吹絏ML文件的語(yǔ)法規(guī)定比HTML要嚴(yán)厲多了。由于有這樣的嚴(yán)厲規(guī)定,軟件工程師編寫(xiě)XML的解析器就容易多了,不像編寫(xiě)HTML言語(yǔ)的解析器,必需費(fèi)盡心思去順應(yīng)不同的網(wǎng)頁(yè)寫(xiě)法,提高本人閱讀器的順應(yīng)才干。實(shí)踐上,這對(duì)
8、于我們初學(xué)者來(lái)說(shuō),也是一件好事。該怎樣就怎樣,不用像原來(lái)那樣去疑惑各種HTML的寫(xiě)法。 11.1 XML格式Xml的實(shí)例11.1 XML格式11.2 JSON格式 Json 的定義Json構(gòu)建的構(gòu)造Json的詳細(xì)方式Json與Xml的比較Json實(shí)例11.2 JSON格式Json 的定義JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫(xiě)。同時(shí)也易于機(jī)器解析和生成。它基于JavaScriptStandard ECMA-262 3rd Edition - December 1999的一個(gè)子集。 JSON采用完全獨(dú)立于言語(yǔ)的文本格式,但是也
9、運(yùn)用了類似于C言語(yǔ)家族的習(xí)慣包括C,C+,C#,Java, JavaScript,Perl,Python等。這些特性使JSON成為理想的數(shù)據(jù)交換言語(yǔ)。 11.2 JSON格式Json構(gòu)建的構(gòu)造1. “稱號(hào)/值對(duì)的集合A collection of name/value pairs。不同的言語(yǔ)中,它被了解為對(duì)象object,紀(jì)錄record,構(gòu)造struct,字典dictionary,哈希表hash table,有鍵列表keyed list,或者關(guān)聯(lián)數(shù)組associative array。2. 值的有序列表An ordered list of values。在大部分言語(yǔ)中,它被了解為數(shù)組arra
10、y。這些都是常見(jiàn)的數(shù)據(jù)構(gòu)造?,F(xiàn)實(shí)上大部分現(xiàn)代計(jì)算機(jī)言語(yǔ)都以某種方式支持它們。這使得一種數(shù)據(jù)格式在同樣基于這些構(gòu)造的編程言語(yǔ)之間交換成為能夠。 11.2 JSON格式Json的詳細(xì)方式1、對(duì)象是一個(gè)無(wú)序的“稱號(hào)/值對(duì)集合。一個(gè)對(duì)象以“左括號(hào)開(kāi)場(chǎng),“右括號(hào)終了。每個(gè)“稱號(hào)后跟一個(gè)“:冒號(hào);“稱號(hào)/值 對(duì)之間運(yùn)用“,逗號(hào)分隔。 11.2 JSON格式Json的詳細(xì)方式2.數(shù)組是值value的有序集合。一個(gè)數(shù)組以“左中括號(hào)開(kāi)場(chǎng),“右中括號(hào)終了。值之間運(yùn)用“,逗號(hào)分隔。 11.2 JSON格式Json的詳細(xì)方式3、值value可以是雙引號(hào)括起來(lái)的字符串string、數(shù)值(number)、true、fal
11、se、null、對(duì)象object或者數(shù)組array。這些構(gòu)造可以嵌套。 。11.2 JSON格式Json的詳細(xì)方式4、字符串string是由雙引號(hào)包圍的恣意數(shù)量Unicode字符的集合,運(yùn)用反斜線本義。一個(gè)字符character即一個(gè)單獨(dú)的字符串character string。 字符串string與C或者Java的字符串非常類似。 11.2 JSON格式Json的詳細(xì)方式5、數(shù)值number也與C或者Java的數(shù)值非常類似。除去未曾運(yùn)用的八進(jìn)制與十六進(jìn)制格式。除去一些編碼細(xì)節(jié)。 11.2 JSON格式Json與Xml的比較可讀性JSON和XML的可讀性可謂不相上下,一邊是簡(jiǎn)易的語(yǔ)法,一邊是規(guī)
12、范的標(biāo)簽方式,很難分出勝負(fù)。可擴(kuò)展性XML天生有很好的擴(kuò)展性,JSON當(dāng)然也有,沒(méi)有什么是XML能擴(kuò)展,JSON不能的。不過(guò)JSON在Javascript主場(chǎng)作戰(zhàn),可以存儲(chǔ)Javascript復(fù)合對(duì)象,有著xml不可比較的優(yōu)勢(shì)。編碼難度XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有提供的工具。無(wú)工具的情況下,置信熟練的開(kāi)發(fā)人員一樣能很快的寫(xiě)出想要的xml文檔和JSON字符串,不過(guò),xml文檔要多很多構(gòu)造上的字符。解碼難度XML的解析得思索子節(jié)點(diǎn)父節(jié)點(diǎn),而JSON的解析難度幾乎為0。11.2 JSON格式Json實(shí)例XML和JSON都運(yùn)用構(gòu)造化方法來(lái)標(biāo)志數(shù)據(jù),下面來(lái)做一個(gè)簡(jiǎn)單的
13、比較?,F(xiàn)假設(shè)有一個(gè)用戶數(shù)據(jù)包括:用戶名、密碼、所在部門(mén)、性別、年齡。用XML表示如下:張三 123456技術(shù)部男30 11.2 JSON格式Json實(shí)例用JSON表示如下:name:張三,password:123456,department:技術(shù)部,sex:男,old:30與XML一樣,JSON也是基于文本的,且它們都運(yùn)用Unicode編碼,同樣具有可讀性。XML比較適宜于標(biāo)志文檔,而JSON卻更適宜于時(shí)行數(shù)據(jù)交換處置。 11.3 讀寫(xiě)XML的常用類在java環(huán)境下讀取xml文件的方法主要有4種:DOM、SAX、JDOM、JAXB DOM SAX JDOM JAXB 11.3 讀寫(xiě)XML的常用
14、類DOM (Document Object Model)此方法主要由W3C提供,它將xml文件全部讀入內(nèi)存中,然后將各個(gè)元素組成一棵數(shù)據(jù)樹(shù),以便快速的訪問(wèn)各個(gè)節(jié)點(diǎn) 。 因此非常耗費(fèi)系統(tǒng)性能 ,對(duì)比較大的文檔不適宜采用DOM方法來(lái)解析。 DOM API 直接沿襲了 XML 規(guī)范。每個(gè)結(jié)點(diǎn)都可以擴(kuò)展的基于 Node 的接口,就多態(tài)性的觀念來(lái)講,它是優(yōu)秀的,但是在 Java 言語(yǔ)中的運(yùn)用不方便,并且可讀性不強(qiáng)。 11.3 讀寫(xiě)XML的常用類DOM (Document Object Model) /下面是建立XML文檔內(nèi)容的過(guò)程,先建立根元素學(xué)生花名冊(cè)“Element root = doc.creat
15、eElement(學(xué)生花名冊(cè));/根元素添加上文檔doc.appendChild(root);/建立學(xué)生元素,添加到根元素Element student = doc.createElement(學(xué)生);student.setAttribute(性別, studentBean.getSex();root.appendChild(student);/建立姓名元素,添加到學(xué)生下面,下同Element name = doc.createElement(姓名);student.appendChild(name);Text tName = doc.createTextNode(studentBean.ge
16、tName();name.appendChild(tName);11.3 讀寫(xiě)XML的常用類SAX(Simple API for XML )此方法主要由XML-DEV 郵件列表的成員開(kāi)發(fā)的,SAX是基于事件的方法,它很類似于標(biāo)簽庫(kù)的處置機(jī)制,在標(biāo)簽開(kāi)場(chǎng)、終了以及錯(cuò)誤發(fā)生等等地方調(diào)用相應(yīng)的接口實(shí)現(xiàn)方法,不是全部文檔都讀入內(nèi)存。 SAX具有優(yōu)良的性能和利用更少的存儲(chǔ)空間特點(diǎn)。SAX 的設(shè)計(jì)只思索了功能的強(qiáng)大性,卻沒(méi)有思索程序員運(yùn)用起來(lái)能否方便。運(yùn)用必需擴(kuò)展ContentHandler、ErrorHandler、DTDHandler等,但是必需擴(kuò)展ContentHandler或者DefaultHan
17、dler 。11.3 讀寫(xiě)XML的常用類SAX(Simple API for XML )獲得元素?cái)?shù)據(jù)的方法characters 獲得元素?cái)?shù)據(jù)中的空白的方法ignorableWhitespace 在解析四處置指令時(shí)調(diào)用的方法processingInstruction 當(dāng)未驗(yàn)證解析器忽略實(shí)體時(shí)調(diào)用的方法skippedEntity運(yùn)轉(zhuǎn)時(shí),只需求運(yùn)用以下代碼:MySAXParser mySAXParser = new MySAXParser();mySAXParser.parserXMLFile(SutInfo.xml);11.3 讀寫(xiě)XML的常用類JDOMJDOM的處置方式有些類似于DOM,但它主要
18、是用SAX實(shí)現(xiàn)的 。JDOM用Java的數(shù)據(jù)類型來(lái)定義操作數(shù)據(jù)樹(shù)的各個(gè)節(jié)點(diǎn) 。JDOM的性能也很優(yōu)越。 11.3 讀寫(xiě)XML的常用類JAXB(Java And XML Binding )JAXB 是以SUN為主的一些公司公布的。JAXB將schema或者DTD映射為java對(duì)象.java文件,然后運(yùn)用這些java對(duì)象來(lái)解析xml文件。需求運(yùn)用之前生成java文件,因此要有固定的schema,無(wú)法處置動(dòng)態(tài)的xml文件。 11.4 JSON在HTML中的運(yùn)用 JSON在HTML中的運(yùn)用json是javascript面向?qū)ο笳Z(yǔ)法的一個(gè)子集。由于json是javascript的一個(gè)子集,因此它可明晰的
19、運(yùn)用于此言語(yǔ)中。var myjsonobject = bindings: ircevent: privmsg, method: newuri, regex: .*, ircevent: privmsg, method: deleteuri, regex: delete.*, ircevent: privmsg, method: randomuri, regex: random.* ; 11.4 JSON在HTML中的運(yùn)用JSON在HTML中的運(yùn)用上面的例如,創(chuàng)建了一個(gè)包括單獨(dú)成員bindings的對(duì)象,此成員包括一個(gè)含有三個(gè)對(duì)象ircevent, “method, 與 “regex的數(shù)組成員可以經(jīng)過(guò).或者下標(biāo)操作符檢索。myjsonobject.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 母嬰健康護(hù)理課程
- 精神護(hù)理中的運(yùn)動(dòng)治療與康復(fù)訓(xùn)練
- (新教材)2026年滬科版八年級(jí)上冊(cè)數(shù)學(xué) 15.2 線段的垂直平分線 課件
- 2025年辦公環(huán)境智能照明協(xié)議(企業(yè))
- 多模態(tài)數(shù)據(jù)融合在數(shù)字孿生中的挑戰(zhàn)
- 基于迭代優(yōu)化的超分辨率算法
- 基于深度學(xué)習(xí)的攻擊溯源
- 基于機(jī)器學(xué)習(xí)的外觀模式檢測(cè)方法研究
- 多模態(tài)特征融合分類
- 球的切接問(wèn)題第1課時(shí) -高中數(shù)學(xué)人教A版(2019)必修二
- 裝修工程質(zhì)量保修服務(wù)措施
- 鈑金裝配調(diào)試工藝流程
- 腫瘤病人疼痛護(hù)理
- 醫(yī)療應(yīng)用的輻射安全和防護(hù)課件
- 項(xiàng)目經(jīng)理年底匯報(bào)
- 新生兒戒斷綜合征評(píng)分標(biāo)準(zhǔn)
- 【公開(kāi)課】絕對(duì)值人教版(2024)數(shù)學(xué)七年級(jí)上冊(cè)+
- 藥品檢驗(yàn)質(zhì)量風(fēng)險(xiǎn)管理
- 中國(guó)古橋欣賞課件
- 2025年硅酸乙酯-32#項(xiàng)目可行性研究報(bào)告
- 超星爾雅學(xué)習(xí)通《心理、行為與文化(北京大學(xué))》2025章節(jié)測(cè)試附答案
評(píng)論
0/150
提交評(píng)論