版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第11章
數(shù)據(jù)交換格式孫燾重點(diǎn):XML格式
1JSON格式
2讀寫XML的常用類
3JSON在HTML中的應(yīng)用
4難點(diǎn):XML格式
1讀寫XML的常用類
211.1XML格式Xml簡介
Xml發(fā)展史
Xml的優(yōu)點(diǎn)
Xml的標(biāo)準(zhǔn)結(jié)構(gòu)Xml的實(shí)例
11.1XML格式Xml簡介什么是XML:1.XML指可擴(kuò)展標(biāo)記語言(ExtensibleMarkupLanguage)2.XML是一種標(biāo)記語言,很類似HTML3.XML的設(shè)計(jì)宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)4.XML標(biāo)簽沒有被預(yù)定義。您需要自行定義標(biāo)簽。5.XML被設(shè)計(jì)為具有自我描述性。6.XML是
W3C的推薦標(biāo)準(zhǔn)11.1XML格式Xml簡介Xml與HTML的主要差異:1.XML不是HTML的替代。2.XML和HTML為不同的目的而設(shè)計(jì):3.XML被設(shè)計(jì)為傳輸和存儲數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的內(nèi)容。4.HTML被設(shè)計(jì)用來顯示數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的外觀。5.HTML旨在顯示信息,而XML旨在傳輸信息11.1XML格式Xml發(fā)展史XML的前身是SGML(TheStandardGeneralizedMarkupLanguage),是自IBM從60年代就開始發(fā)展的GML(GeneralizedMarkupLanguage)
同HTML一樣,XML(可擴(kuò)展標(biāo)識語言)是通用標(biāo)識語言標(biāo)準(zhǔn)(SGML)的一個(gè)子集,它是描述網(wǎng)絡(luò)上的數(shù)據(jù)內(nèi)容和結(jié)構(gòu)的標(biāo)準(zhǔn)。盡管如此,XML不象HTML,HTML僅僅提供了在頁面上顯示信息的通用方法(沒有上下文相關(guān)和動(dòng)態(tài)功能),XML則對數(shù)據(jù)賦予上下文相關(guān)功能,它繼承了SGML的大部分功能,卻使用了不太復(fù)雜的技術(shù)。
11.1XML格式Xml的優(yōu)點(diǎn)1.XML把數(shù)據(jù)從HTML分離2.XML簡化數(shù)據(jù)共享3.XML簡化數(shù)據(jù)傳輸4.XML簡化平臺的變更5.XML使您的數(shù)據(jù)更有用6.XML用于創(chuàng)建新的Internet語言11.1XML格式11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)1.XML文件的第一行必須是聲明該文件是XML文件以及它所使用的XML規(guī)范版本。在文件的前面不能夠有其它元素或者注釋。2.在XML文件中有且只能夠有一個(gè)根元素。我們的第一個(gè)例子中,〈參考資料〉...〈/參考資料〉就是此XML文件的根元素。11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)構(gòu)3.在XML文件中的標(biāo)標(biāo)記必須正正確地關(guān)閉閉,也就是是說,在XML文件中,控控制標(biāo)記必必須有與與之對應(yīng)的的結(jié)束標(biāo)記記。如:〈名稱〉標(biāo)記必須有有對應(yīng)的〈/名稱〉結(jié)束標(biāo)記,,不像HTML,某些標(biāo)記記的結(jié)束標(biāo)標(biāo)記可有可可無。如果果在XML文件中遇到到自成一個(gè)個(gè)單元的標(biāo)標(biāo)記,就是是類似于HTML中的〈imgsrc=.....〉的這這些些沒沒有有結(jié)結(jié)束束標(biāo)標(biāo)記記的的時(shí)時(shí)候候,,XML把它它稱稱為為““空空元元素素””,,必必須須用用這這樣樣的的寫寫法法::〈空元元素素名名/〉〉,如如果果元元素素中中含含有有屬屬性性時(shí)時(shí)寫寫法法則則為為::〈空元元素素名名屬屬性性名名=““屬性性值值””/〉〉。11.1XML格式式Xml的標(biāo)標(biāo)準(zhǔn)準(zhǔn)結(jié)結(jié)構(gòu)構(gòu)4.標(biāo)記記之之間間不不得得交交叉叉。。在在以以前前的的HTML文件件中中,,可可以以這這樣樣寫寫::〈B〉〉〈〈H〉〉XXXXXXX〈〈/B〉〉〈〈/H〉〉,〈〈B〉〉和〈H〉〉標(biāo)記記之之間間有有相相互互重重疊疊的的區(qū)區(qū)域域,,而而在在XML中,,是是嚴(yán)嚴(yán)格格禁禁止止這這樣樣標(biāo)標(biāo)記記交交錯(cuò)錯(cuò)的的寫寫法法,,標(biāo)標(biāo)記記必必須須以以規(guī)規(guī)則則性性的的次次序序來來出出現(xiàn)現(xiàn)。。5.屬性性值值必必須須要要用用““””號號括括起起來來。。如如第第一一個(gè)個(gè)例例子子中中的的““1.0””、““gb2312””、““人人民民幣幣””。。都都是是用用““””號號括括起起來來了了的的,,不不能能漏漏掉掉。。6.控制制標(biāo)標(biāo)記記、、指指令令和和屬屬性性名名稱稱等等英英文文要要區(qū)區(qū)分分大大小小寫寫。。與與HTML不同同的的是是,,在在HTML中,,類類似似〈B〉〉和〈b〉〉的標(biāo)標(biāo)記記含含義義是是一一樣樣的的,,而而在在XML中,,類類似似〈name〉〉、〈NAME〉〉或〈Name〉〉這樣樣的的標(biāo)標(biāo)記記是是不不同同的的。。11.1XML格式式Xml的標(biāo)標(biāo)準(zhǔn)準(zhǔn)結(jié)結(jié)構(gòu)構(gòu)7.在HTML文件件中中,,如如果果要要瀏瀏覽覽器器原原封封不不動(dòng)動(dòng)地地將將所所輸輸入入的的東東西西顯顯示示出出來來,,可可以以將將這這些些東東西西放放到到〈pre〉〉〈〈/pre〉〉或者者〈xmp〉〉〈〈/xmp〉〉標(biāo)記記中中間間。。這這對對于于創(chuàng)創(chuàng)建建HTML教學(xué)學(xué)的的網(wǎng)網(wǎng)頁頁是是必必不不可可少少的的,,因因?yàn)闉榫W(wǎng)網(wǎng)頁頁中中要要顯顯示示HTML的源源代代碼碼。。而而在在XML中,,要要實(shí)實(shí)現(xiàn)現(xiàn)這這樣樣的的功功能能,,就就必必須須使使用用CDATA標(biāo)記記。。8.XML處理理空空白白字字符符和和HTML不一一樣樣。。HTML標(biāo)準(zhǔn)準(zhǔn)規(guī)規(guī)定定,,不不管管有有多多少少個(gè)個(gè)空空白白,,都都當(dāng)當(dāng)作作一一個(gè)個(gè)空空白白來來處處理理;而在在XML中規(guī)規(guī)定定,,所所有有標(biāo)標(biāo)記記以以外外的的空空白白,,解解析析器器都都要要忠忠實(shí)實(shí)地地交交給給下下游游的的應(yīng)應(yīng)用用程程序序處處理理。。這這樣樣,,有有時(shí)時(shí)必必須須摒摒棄棄編編寫寫HTML文件件時(shí)時(shí)的的縮縮排排習(xí)習(xí)慣慣,,因因?yàn)闉榭s縮排排的的空空格格,,解解析析器器也也要要處處理理。11.1XML格式式Xml的標(biāo)標(biāo)準(zhǔn)準(zhǔn)結(jié)結(jié)構(gòu)構(gòu)符合合上上述述規(guī)規(guī)定定的的XML文件件就就是是Well-Formed的XML文件件。。這這是是編編寫寫XML文件件的的最最基基本本要要求求。??煽梢砸钥纯吹降絏ML文件件的的語語法法規(guī)規(guī)定定比比HTML要嚴(yán)嚴(yán)格格多多了了。。由由于于有有這這樣樣的的嚴(yán)嚴(yán)格格規(guī)規(guī)定定,,軟軟件件工工程程師師編編寫寫XML的解解析析器器就就容容易易多多了了,,不不像像編編寫寫HTML語言言的的解解析析器器,,必必須須費(fèi)費(fèi)盡盡心心思思去去適適應(yīng)應(yīng)不不同同的的網(wǎng)網(wǎng)頁頁寫寫法法,,提提高高自自己己瀏瀏覽覽器器的的適適應(yīng)應(yīng)能能力力。。實(shí)實(shí)際際上上,,這這對對于于我我們們初初學(xué)學(xué)者者來來說說,,也也是是一一件件好好事事。。該該怎怎樣樣就就怎怎樣樣,,不不必必像像原原來來那那樣樣去去疑疑惑惑各各種種HTML的寫寫法法。。11.1XML格式式Xml的實(shí)實(shí)例例11.1XML格式式11.2JSON格式式Json的定定義義Json構(gòu)建建的的結(jié)結(jié)構(gòu)構(gòu)Json的具具體體形形式式Json與Xml的比比較較Json實(shí)例例11.2JSON格式式Json的定定義義JSON(JavaScriptObjectNotation)是一一種種輕輕量量級級的的數(shù)數(shù)據(jù)據(jù)交交換換格格式式。。易易于于人人閱閱讀讀和和編編寫寫。。同同時(shí)時(shí)也也易易于于機(jī)機(jī)器器解解析析和和生生成成。。它它基基于于JavaScript(StandardECMA-2623rdEdition-December1999)的的一一個(gè)個(gè)子子集集。。JSON采用用完完全全獨(dú)獨(dú)立立于于語語言言的的文文本本格格式式,,但但是是也也使使用用了了類類似似于于C語言言家族族的的習(xí)習(xí)慣慣((包包括括C,C++,C#,Java,JavaScript,Perl,Python等))。。這這些些特特性性使使JSON成為為理理想想的的數(shù)數(shù)據(jù)據(jù)交交換換語語言言。。11.2JSON格式式Json構(gòu)建建的的結(jié)結(jié)構(gòu)構(gòu)1.““名稱稱/值””對對的的集集合合((Acollectionofname/valuepairs)。。不不同同的的語語言言中中,,它它被被理理解解為為對對象象((object),,紀(jì)紀(jì)錄錄((record),,結(jié)結(jié)構(gòu)構(gòu)((struct),,字典典(dictionary),,哈希希表表(hashtable),,有有鍵鍵列列表表((keyedlist),,或或者者關(guān)關(guān)聯(lián)聯(lián)數(shù)組(associativearray)。2.值的有序列表表(Anorderedlistofvalues)。在大部分分語言中,它它被理解為數(shù)數(shù)組(array)。這些都是常見見的數(shù)據(jù)結(jié)構(gòu)。事實(shí)上大部部分現(xiàn)代計(jì)算機(jī)語言都以某種種形式支持它它們。這使得得一種數(shù)據(jù)格格式在同樣基基于這些結(jié)構(gòu)構(gòu)的編程語言之間交換換成為可能。。11.2JSON格式Json的具體形式1、對象是一個(gè)個(gè)無序的“‘‘名稱/值’對”集合合。一個(gè)對象象以“{”(左括號)開開始,“}”(右括號)結(jié)結(jié)束。每個(gè)““名稱”后跟跟一個(gè)“:”(冒號);““‘名稱/值’對”之之間使用“,”(逗號)分隔隔。11.2JSON格式Json的具體形式2.數(shù)組是值(value)的有序集合合。一個(gè)數(shù)組組以“[”(左中括號))開始,“]”(右中括號))結(jié)束。值之之間使用“,”(逗號)分隔隔。11.2JSON格式Json的具體形式3、值(value)可以是雙引引號括起來的的字符串(string)、數(shù)值(number)、true、false、null、對象(object)或者數(shù)組((array)。這些結(jié)構(gòu)構(gòu)可以嵌套。。。11.2JSON格式Json的具體形式4、字符串(string)是由雙引號號包圍的任意意數(shù)量Unicode字符的集合,,使用反斜線線轉(zhuǎn)義。一個(gè)個(gè)字符(character)即一個(gè)單獨(dú)獨(dú)的字符串((characterstring)。字符串(string)與C或者Java的字符串非常常相似。11.2JSON格式Json的具體形式5、數(shù)值(number)也與C或者Java的數(shù)值非常相相似。除去未未曾使用的八八進(jìn)制與十六六進(jìn)制格式。。除去一些編編碼細(xì)節(jié)。11.2JSON格式Json與Xml的比較◆可讀性JSON和XML的可讀性可謂謂不相上下,,一邊是簡易易的語法,一一邊是規(guī)范的的標(biāo)簽形式,,很難分出勝勝負(fù)?!艨蓴U(kuò)展性XML天生有很好的的擴(kuò)展性,JSON當(dāng)然也有,沒沒有什么是XML能擴(kuò)展,JSON不能的。不過過JSON在Javascript主場作戰(zhàn),可可以存儲Javascript復(fù)合對象,有有著xml不可比擬的優(yōu)優(yōu)勢?!艟幋a難度XML有豐富的編碼碼工具,比如如Dom4j、JDom等,JSON也有提供的工具。。無工具的情情況下,相信信熟練的開發(fā)發(fā)人員一樣能能很快的寫出出想要的xml文檔和JSON字符串,不過過,xml文檔要多很多多結(jié)構(gòu)上的字字符?!艚獯a難度XML的解析得考慮慮子節(jié)點(diǎn)父節(jié)節(jié)點(diǎn),而JSON的解析難度幾幾乎為0。11.2JSON格式Json實(shí)例XML和JSON都使用結(jié)構(gòu)化化方法來標(biāo)記記數(shù)據(jù),下面面來做一個(gè)簡簡單的比較。。
現(xiàn)假設(shè)有有一個(gè)用戶數(shù)數(shù)據(jù)包括:用用戶名、密碼碼、所在部門門、性別、年年齡。
用XML表示如下:<?xmlversion="1.0"encoding="utf-8"?>
<user><name>張三</name>
<password>123456</password><department>技術(shù)部</department>
<sex>男</sex>
<old>30</old></user>11.2JSON格式Json實(shí)例用JSON表示如下:{
"name":"張三",
"password":"123456",
"department":"技術(shù)部",
"sex":"男",
"old":30
}與XML一樣,JSON也是基于文本本的,且它們們都使用Unicode編碼,同樣具具有可讀性。。XML比較適合于標(biāo)標(biāo)記文檔,而而JSON卻更適合于時(shí)時(shí)行數(shù)據(jù)交換換處理。11.3讀寫XML的常用類在java環(huán)境下讀取xml文件的方法主主要有4種:DOM、SAX、JDOM、JAXBDOMSAXJDOMJAXB11.3讀寫XML的常用類DOM(DocumentObjectModel)此方法主要由由W3C提供,它將xml文件全部讀入入內(nèi)存中,然然后將各個(gè)元元素組成一棵棵數(shù)據(jù)樹,以以便快速的訪訪問各個(gè)節(jié)點(diǎn)點(diǎn)。因此此非常消耗系系統(tǒng)性能,,對比較大的的文檔不適宜宜采用DOM方法來解析。。DOMAPI直接沿襲了XML規(guī)范。每個(gè)結(jié)結(jié)點(diǎn)都可以擴(kuò)擴(kuò)展的基于Node的接口,就多多態(tài)性的觀點(diǎn)點(diǎn)來講,它是是優(yōu)秀的,但但是在Java語言中的應(yīng)用用不方便,并并且可讀性不不強(qiáng)。11.3讀寫XML的常用類DOM(DocumentObjectModel)//下面是建立XML文檔內(nèi)容的過過程,先建立立根元素"學(xué)生花名冊“
Elementroot=doc.createElement("學(xué)生花名冊");//根元素添加上上文檔doc.appendChild(root);
//建立"學(xué)生"元素,添加到到根元素Elementstudent=doc.createElement("學(xué)生");student.setAttribute("性別",studentBean.getSex());root.appendChild(student);//建立"姓名"元素,添加到到學(xué)生下面,,下同Elementname=doc.createElement("姓名");student.appendChild(name);
TexttName=doc.createTextNode(studentBean.getName());name.appendChild(tName);11.3讀寫XML的常用類SAX(SimpleAPIforXML)此方法主要由由XML-DEV郵件列表的成成員開發(fā)的,,SAX是基于事件的的方法,它很很類似于標(biāo)簽簽庫的處理機(jī)機(jī)制,在標(biāo)簽簽開始、結(jié)束束以及錯(cuò)誤發(fā)發(fā)生等等地方方調(diào)用相應(yīng)的的接口實(shí)現(xiàn)方方法,不是全全部文檔都讀讀入內(nèi)存。SAX具有優(yōu)異的性性能和利用更更少的存儲空空間特點(diǎn)。SAX的設(shè)計(jì)只考慮慮了功能的強(qiáng)強(qiáng)大性,卻沒沒有考慮程序序員使用起來來是否方便。。使用必須擴(kuò)展展ContentHandler、ErrorHandler、DTDHandler等,但是必須須擴(kuò)展ContentHandler(或者DefaultHandler)。11.3讀寫XML的常用類SAX(SimpleAPIforXML)取得元素?cái)?shù)據(jù)據(jù)的方法——characters取得元素?cái)?shù)據(jù)據(jù)中的空白的的方法——ignorableWhitespace在解析到處理理指令時(shí)調(diào)用用的方法——processingInstruction當(dāng)未驗(yàn)證解析析器忽略實(shí)體體時(shí)調(diào)用的方方法——skippedEntity運(yùn)行時(shí),只需需要使用下列列代碼:MySAXParsermySAXParser=newMySAXParser();mySAXParser.parserXMLFile("SutInfo.xml");11.3讀寫XML的常用類JDOMJDOM的處理方式有有些類似于DOM,但它主要是是用SAX實(shí)現(xiàn)的。JDOM用Java的數(shù)據(jù)類型來來定義操作數(shù)數(shù)據(jù)樹的各個(gè)個(gè)節(jié)點(diǎn)。JDOM的性能也很優(yōu)優(yōu)越。11.3讀寫XML的常用類JAXB(JavaAndXMLBinding)JAXB是以SUN為主的一些公公司公布的。。JAXB將schema(或者DTD)映射為java對象(.java文件),然后后使用這些java對象來解析xml文件。需要使使用之前生成成java文件,因而要要有固定的schema,無法處理動(dòng)動(dòng)態(tài)的xml文件。11.4JSON在HTML中的應(yīng)用JSON在HTML中的應(yīng)用json是javascript面向?qū)ο笳Z法法的一個(gè)子集集。由于json是javascript的一個(gè)子集,,因此它可清清晰的運(yùn)用于于此語言中。。varmyjsonobject={"bindings":[{"ircevent":"privmsg","method":"newuri","regex":"^http://.*"},{"ircevent":"privmsg","method":"deleteuri","regex":"^delete.*"},{"ircevent":"privmsg","method":"randomuri","regex":"^random.*"}]};11.4JSON在HTML中的應(yīng)用JSON在HT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度鋁合金門窗工程勞務(wù)分包合同示范文本4篇
- 2025年環(huán)保型環(huán)衛(wèi)車輛及設(shè)備采購合同3篇
- 2025年度苗圃技術(shù)員苗木市場分析與營銷服務(wù)合同3篇
- 2025年度數(shù)字經(jīng)濟(jì)園區(qū)承包經(jīng)營合同示范文本4篇
- 商業(yè)安全生產(chǎn)的文化塑造與實(shí)踐
- 2025版新能源發(fā)電項(xiàng)目工程監(jiān)理合同4篇
- 2025版五金配件進(jìn)出口貿(mào)易合同樣本3篇
- 二零二五年度酒店餐飲服務(wù)合同范本
- 2025年智能櫥柜研發(fā)與制造合作協(xié)議4篇
- 2025年度酒吧吧臺承包與酒吧市場調(diào)研與分析合同4篇
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院單招職業(yè)技能測試題庫標(biāo)準(zhǔn)卷
- DB32-T 4444-2023 單位消防安全管理規(guī)范
- 臨床三基考試題庫(附答案)
- 人員密集場所消防安全管理培訓(xùn)
- JCT587-2012 玻璃纖維纏繞增強(qiáng)熱固性樹脂耐腐蝕立式貯罐
- 典范英語2b課文電子書
- 員工信息登記表(標(biāo)準(zhǔn)版)
- 春節(jié)工地停工復(fù)工計(jì)劃安排( 共10篇)
- 新教材人教版高中物理選擇性必修第二冊全冊各章節(jié)課時(shí)練習(xí)題及章末測驗(yàn)含答案解析(安培力洛倫茲力電磁感應(yīng)交變電流等)
- 中考數(shù)學(xué)試題(含答案)共12套
- 初級養(yǎng)老護(hù)理員培訓(xùn)全套
評論
0/150
提交評論