第11章數(shù)據(jù)交換格式=創(chuàng)新教育基礎(chǔ)與實踐課件_第1頁
第11章數(shù)據(jù)交換格式=創(chuàng)新教育基礎(chǔ)與實踐課件_第2頁
第11章數(shù)據(jù)交換格式=創(chuàng)新教育基礎(chǔ)與實踐課件_第3頁
第11章數(shù)據(jù)交換格式=創(chuàng)新教育基礎(chǔ)與實踐課件_第4頁
第11章數(shù)據(jù)交換格式=創(chuàng)新教育基礎(chǔ)與實踐課件_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第11章

數(shù)據(jù)交換格式孫燾第11章數(shù)據(jù)交換格式孫燾重點(diǎn):XML格式

1JSON格式

2讀寫XML的常用類

3JSON在HTML中的應(yīng)用

4重點(diǎn):XML格式1JSON格式2讀寫XML的常用類3J難點(diǎn):XML格式

1讀寫XML的常用類

2難點(diǎn):XML格式1讀寫XML的常用類211.1XML格式Xml簡介

Xml發(fā)展史

Xml的優(yōu)點(diǎn)

Xml的標(biāo)準(zhǔn)結(jié)構(gòu)Xml的實例

11.1XML格式11.1XML格式Xml簡介什么是XML:1.XML指可擴(kuò)展標(biāo)記語言(ExtensibleMarkupLanguage)2.XML是一種標(biāo)記語言,很類似HTML3.XML的設(shè)計宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)4.XML標(biāo)簽沒有被預(yù)定義。您需要自行定義標(biāo)簽。5.XML被設(shè)計為具有自我描述性。6.XML是

W3C的推薦標(biāo)準(zhǔn)11.1XML格式Xml簡介11.1XML格式Xml簡介Xml與HTML的主要差異:1.XML不是HTML的替代。2.XML和HTML為不同的目的而設(shè)計:3.XML被設(shè)計為傳輸和存儲數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的內(nèi)容。4.HTML被設(shè)計用來顯示數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的外觀。5.HTML旨在顯示信息,而XML旨在傳輸信息11.1XML格式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)的一個子集,它是描述網(wǎng)絡(luò)上的數(shù)據(jù)內(nèi)容和結(jié)構(gòu)的標(biāo)準(zhǔn)。盡管如此,XML不象HTML,HTML僅僅提供了在頁面上顯示信息的通用方法(沒有上下文相關(guān)和動態(tài)功能),XML則對數(shù)據(jù)賦予上下文相關(guān)功能,它繼承了SGML的大部分功能,卻使用了不太復(fù)雜的技術(shù)。

11.1XML格式Xml發(fā)展史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格式Xml的優(yōu)點(diǎn)11.1XML格式11.1XML格式11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)1.XML文件的第一行必須是聲明該文件是XML文件以及它所使用的XML規(guī)范版本。在文件的前面不能夠有其它元素或者注釋。2.在XML文件中有且只能夠有一個根元素。我們的第一個例子中,〈參考資料〉...〈/參考資料〉就是此XML文件的根元素。11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)3.在XML文件中的標(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)記可有可無。如果在XML文件中遇到自成一個單元的標(biāo)記,就是類似于HTML中的〈imgsrc=.....〉的這些沒有結(jié)束標(biāo)記的時候,XML把它稱為“空元素”,必須用這樣的寫法:〈空元素名/〉,如果元素中含有屬性時寫法則為:〈空元素名屬性名=“屬性值”/〉。

11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)4.標(biāo)記之間不得交叉。在以前的HTML文件中,可以這樣寫:

〈B〉〈H〉XXXXXXX〈/B〉〈/H〉,〈B〉和〈H〉標(biāo)記之間有相互重疊的區(qū)域,而在XML中,是嚴(yán)格禁止這樣標(biāo)記交錯的寫法,標(biāo)記必須以規(guī)則性的次序來出現(xiàn)。5.屬性值必須要用“”號括起來。如第一個例子中的“1.0”、“gb2312”、“人民幣”。都是用“”號括起來了的,不能漏掉。6.控制標(biāo)記、指令和屬性名稱等英文要區(qū)分大小寫。與HTML不同的是,在HTML中,類似〈B〉和〈b〉的標(biāo)記含義是一樣的,而在XML中,類似〈name〉、〈NAME〉或〈Name〉這樣的標(biāo)記是不同的。11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)7.在HTML文件中,如果要瀏覽器原封不動地將所輸入的東西顯示出來,可以將這些東西放到〈pre〉〈/pre〉或者〈xmp〉〈/xmp〉標(biāo)記中間。這對于創(chuàng)建HTML教學(xué)的網(wǎng)頁是必不可少的,因為網(wǎng)頁中要顯示HTML的源代碼。而在XML中,要實現(xiàn)這樣的功能,就必須使用CDATA標(biāo)記。

8.XML處理空白字符和HTML不一樣。HTML標(biāo)準(zhǔn)規(guī)定,不管有多少個空白,都當(dāng)作一個空白來處理;而在XML中規(guī)定,所有標(biāo)記以外的空白,解析器都要忠實地交給下游的應(yīng)用程序處理。這樣,有時必須摒棄編寫HTML文件時的縮排習(xí)慣,因為縮排的空格,解析器也要處理。11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)符合上述規(guī)定的XML文件就是Well-Formed的XML文件。這是編寫XML文件的最基本要求。可以看到XML文件的語法規(guī)定比HTML要嚴(yán)格多了。由于有這樣的嚴(yán)格規(guī)定,軟件工程師編寫XML的解析器就容易多了,不像編寫HTML語言的解析器,必須費(fèi)盡心思去適應(yīng)不同的網(wǎng)頁寫法,提高自己瀏覽器的適應(yīng)能力。實際上,這對于我們初學(xué)者來說,也是一件好事。該怎樣就怎樣,不必像原來那樣去疑惑各種HTML的寫法。

11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)11.1XML格式Xml的實例11.1XML格式Xml的實例11.1XML格式11.1XML格式11.2JSON格式Json的定義Json構(gòu)建的結(jié)構(gòu)Json的具體形式Json與Xml的比較Json實例11.2JSON格式Json的定義11.2JSON格式Json的定義JSON(JavaScriptObjectNotation)是一種輕量級的數(shù)據(jù)交換格式。易于人閱讀和編寫。同時也易于機(jī)器解析和生成。它基于JavaScript(StandardECMA-2623rdEdition-December1999)的一個子集。JSON采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C,

C++,

C#,

Java,JavaScript,

Perl,

Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。

11.2JSON格式Json的定義11.2JSON格式Json構(gòu)建的結(jié)構(gòu)1.“名稱/值”對的集合(Acollectionofname/valuepairs)。不同的語言中,它被理解為對象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hashtable),有鍵列表(keyedlist),或者關(guān)聯(lián)數(shù)組

(associativearray)。

2.值的有序列表(Anorderedlistofvalues)。在大部分語言中,它被理解為數(shù)組(array)。

這些都是常見的數(shù)據(jù)結(jié)構(gòu)。事實上大部分現(xiàn)代計算機(jī)語言都以某種形式支持它們。這使得一種數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語言之間交換成為可能。

11.2JSON格式Json構(gòu)建的結(jié)構(gòu)11.2JSON格式Json的具體形式1、對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結(jié)束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值’對”之間使用“,”(逗號)分隔。

11.2JSON格式Json的具體形式11.2JSON格式Json的具體形式2.數(shù)組是值(value)的有序集合。一個數(shù)組以“[”(左中括號)開始,“]”(右中括號)結(jié)束。值之間使用“,”(逗號)分隔。

11.2JSON格式Json的具體形式11.2JSON格式Json的具體形式3、值(value)可以是雙引號括起來的字符串(string)、數(shù)值(number)、true、false、

null、對象(object)或者數(shù)組(array)。這些結(jié)構(gòu)可以嵌套。

11.2JSON格式Json的具體形式11.2JSON格式Json的具體形式4、字符串(string)是由雙引號包圍的任意數(shù)量Unicode字符的集合,使用反斜線轉(zhuǎn)義。一個字符(character)即一個單獨(dú)的字符串(characterstring)。

字符串(string)與C或者Java的字符串非常相似。

11.2JSON格式Json的具體形式11.2JSON格式Json的具體形式5、數(shù)值(number)也與C或者Java的數(shù)值非常相似。除去未曾使用的八進(jìn)制與十六進(jìn)制格式。除去一些編碼細(xì)節(jié)。

11.2JSON格式Json的具體形式11.2JSON格式Json與Xml的比較◆可讀性

JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規(guī)范的標(biāo)簽形式,很難分出勝負(fù)。

◆可擴(kuò)展性

XML天生有很好的擴(kuò)展性,JSON當(dāng)然也有,沒有什么是XML能擴(kuò)展,JSON不能的。不過JSON在Javascript主場作戰(zhàn),可以存儲Javascript復(fù)合對象,有著xml不可比擬的優(yōu)勢。

◆編碼難度

XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有提供的工具。無工具的情況下,相信熟練的開發(fā)人員一樣能很快的寫出想要的xml文檔和JSON字符串,不過,xml文檔要多很多結(jié)構(gòu)上的字符。

◆解碼難度

XML的解析得考慮子節(jié)點(diǎn)父節(jié)點(diǎn),而JSON的解析難度幾乎為0。11.2JSON格式Json與Xml的比較11.2JSON格式Json實例XML和JSON都使用結(jié)構(gòu)化方法來標(biāo)記數(shù)據(jù),下面來做一個簡單的比較。

現(xiàn)假設(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實例11.2JSON格式Json實例用JSON表示如下:

{

"name":"張三",

"password":"123456",

"department":"技術(shù)部",

"sex":"男",

"old":30

}

與XML一樣,JSON也是基于文本的,且它們都使用Unicode編碼,同樣具有可讀性。XML比較適合于標(biāo)記文檔,而JSON卻更適合于時行數(shù)據(jù)交換處理。

11.2JSON格式Json實例11.3讀寫XML的常用類在java環(huán)境下讀取xml文件的方法主要有4種:DOM、SAX、JDOM、JAXB

DOM

SAX

JDOM

JAXB

11.3讀寫XML的常用類在java環(huán)境下讀取xml文件的11.3讀寫XML的常用類DOM

(DocumentObjectModel)此方法主要由W3C提供,它將xml文件全部讀入內(nèi)存中,然后將各個元素組成一棵數(shù)據(jù)樹,以便快速的訪問各個節(jié)點(diǎn)。因此非常消耗系統(tǒng)性能,對比較大的文檔不適宜采用DOM方法來解析。DOMAPI直接沿襲了XML規(guī)范。每個結(jié)點(diǎn)都可以擴(kuò)展的基于Node的接口,就多態(tài)性的觀點(diǎn)來講,它是優(yōu)秀的,但是在Java語言中的應(yīng)用不方便,并且可讀性不強(qiáng)。

11.3讀寫XML的常用類DOM(DocumentOb11.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的常用類DOM(DocumentOb11.3讀寫XML的常用類SAX(SimpleAPIforXML)此方法主要由XML-DEV郵件列表的成員開發(fā)的,SAX是基于事件的方法,它很類似于標(biāo)簽庫的處理機(jī)制,在標(biāo)簽開始、結(jié)束以及錯誤發(fā)生等等地方調(diào)用相應(yīng)的接口實現(xiàn)方法,不是全部文檔都讀入內(nèi)存。SAX具有優(yōu)異的性能和利用更少的存儲空間特點(diǎn)。SAX的設(shè)計只考慮了功能的強(qiáng)大性,卻沒有考慮程序員使用起來是否方便。使用必須擴(kuò)展ContentHandler、ErrorHandler、DTDHandler等,但是必須擴(kuò)展ContentHandler(或者DefaultHandler)。11.3讀寫XML的常用類SAX(SimpleAPIf11.3讀寫XML的常用類SAX(SimpleAPIforXML)取得元素數(shù)據(jù)的方法——characters

取得元素數(shù)據(jù)中的空白的方法——ignorableWhitespace

在解析到處理指令時調(diào)用的方法——processingInstruction

當(dāng)未驗證解析器忽略實體時調(diào)用的方法——skippedEntity

運(yùn)行時,只需要使用下列代碼:MySAXParsermySAXParser=newMySAXParser();mySAXParser.parserXMLFile("SutInfo.xml");11.3讀寫XML的常用類SAX(SimpleAPIf11.3讀寫XML的常用類JDOM

JDOM的處理方式有些類似于DOM,但它主要是用SAX實現(xiàn)的。JDOM用Java的數(shù)據(jù)類型來定義操作數(shù)據(jù)樹的各個節(jié)點(diǎn)。JDOM的性能也很優(yōu)越。

11.3讀寫XML的常用類JDOM11.3讀寫XML的常用類JAXB(JavaAndXMLBinding)

JAXB是以SUN為主的一些公司公布的。JAXB將schema(或者DTD)映射為java對象(.java文件),然后使用這些java對象來解析xml文件。需要使用之前生成java文件,因而要有固定的schema,無法處理動態(tài)的xml文件。

11.3讀寫XML的常用類JAXB(JavaAndXM11.4JSON在HTML中的應(yīng)用

JSON在HTML中的應(yīng)用json是javascript面向?qū)ο笳Z法的一個子集。由于json是javascript的一個子集,因此它可清晰的運(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在HTML中的11.4JSON在HTML中的應(yīng)用JSON在HTML中的應(yīng)用上面的示例,創(chuàng)建了一個包括單獨(dú)成員”bindings”的對象,此成員包括一個含有三個對象(”ircevent”,“method”,與“regex”)的數(shù)組

成員可以通過.或者下標(biāo)操作符檢索。

myjsonobject.bindings[0].method

//"newuri"

11.4JSON在HTML中的應(yīng)用JSON在HTML中的應(yīng)11.4JSON在HTML中的應(yīng)用JSON在HTML中的應(yīng)用為了將json文本轉(zhuǎn)換為對象,可以使用eval()函數(shù)。eval()函數(shù)調(diào)用javascript編輯器。由于json是javascript的子集,因此編譯器將正確的解析文本并產(chǎn)生對象結(jié)構(gòu)。文本必須括在括號中避免產(chǎn)生javascript的語法歧義。

varmyobject=eval('('+myjsontext+')');

11.4JSON在HTML中的應(yīng)用JSON在HTML中的應(yīng)11.4JSON在HTML中的應(yīng)用JSON在HTML中的應(yīng)用eval函數(shù)非??焖?。它可以編譯執(zhí)行任何javascript程序,因此產(chǎn)生了安全性問題。當(dāng)使用可信任與完善的源代碼時才可以使用eval函數(shù)。這樣可以更安全的使用json解析器。使用xmlhttprequest的web應(yīng)用,頁面之間的通訊只允許同源,因此是可以信任的。但這卻不是完善的。如果服務(wù)器沒有嚴(yán)謹(jǐn)?shù)膉son編碼,或者沒有嚴(yán)格的輸入驗證,那么可能傳送包括危險腳本的無效json文本。eval函數(shù)將執(zhí)行惡意的腳本。

使用json解析器可以防止此類事件。json解析器只能辨識json文本,拒絕所有腳本。提供了本地json支持的瀏覽器的json解析器將遠(yuǎn)快于eval函數(shù)。

11.4JSON在HTML中的應(yīng)用JSON在HTML中的應(yīng)11.4JSON在HTML中的應(yīng)用JSON在HTML中的應(yīng)用JSON解析和系列化功能,JSON官方網(wǎng)站是提供了官方的Java實現(xiàn)的(org.json)。此外,目前已有很多成熟的JSON解析器。

11.4JSON在HTML中的應(yīng)用JSON在HTML中的應(yīng)結(jié)束結(jié)束演講完畢,謝謝觀看!演講完畢,謝謝觀看!第11章

數(shù)據(jù)交換格式孫燾第11章數(shù)據(jù)交換格式孫燾重點(diǎn):XML格式

1JSON格式

2讀寫XML的常用類

3JSON在HTML中的應(yīng)用

4重點(diǎn):XML格式1JSON格式2讀寫XML的常用類3J難點(diǎn):XML格式

1讀寫XML的常用類

2難點(diǎn):XML格式1讀寫XML的常用類211.1XML格式Xml簡介

Xml發(fā)展史

Xml的優(yōu)點(diǎn)

Xml的標(biāo)準(zhǔn)結(jié)構(gòu)Xml的實例

11.1XML格式11.1XML格式Xml簡介什么是XML:1.XML指可擴(kuò)展標(biāo)記語言(ExtensibleMarkupLanguage)2.XML是一種標(biāo)記語言,很類似HTML3.XML的設(shè)計宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)4.XML標(biāo)簽沒有被預(yù)定義。您需要自行定義標(biāo)簽。5.XML被設(shè)計為具有自我描述性。6.XML是

W3C的推薦標(biāo)準(zhǔn)11.1XML格式Xml簡介11.1XML格式Xml簡介Xml與HTML的主要差異:1.XML不是HTML的替代。2.XML和HTML為不同的目的而設(shè)計:3.XML被設(shè)計為傳輸和存儲數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的內(nèi)容。4.HTML被設(shè)計用來顯示數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的外觀。5.HTML旨在顯示信息,而XML旨在傳輸信息11.1XML格式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)的一個子集,它是描述網(wǎng)絡(luò)上的數(shù)據(jù)內(nèi)容和結(jié)構(gòu)的標(biāo)準(zhǔn)。盡管如此,XML不象HTML,HTML僅僅提供了在頁面上顯示信息的通用方法(沒有上下文相關(guān)和動態(tài)功能),XML則對數(shù)據(jù)賦予上下文相關(guān)功能,它繼承了SGML的大部分功能,卻使用了不太復(fù)雜的技術(shù)。

11.1XML格式Xml發(fā)展史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格式Xml的優(yōu)點(diǎn)11.1XML格式11.1XML格式11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)1.XML文件的第一行必須是聲明該文件是XML文件以及它所使用的XML規(guī)范版本。在文件的前面不能夠有其它元素或者注釋。2.在XML文件中有且只能夠有一個根元素。我們的第一個例子中,〈參考資料〉...〈/參考資料〉就是此XML文件的根元素。11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)3.在XML文件中的標(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)記可有可無。如果在XML文件中遇到自成一個單元的標(biāo)記,就是類似于HTML中的〈imgsrc=.....〉的這些沒有結(jié)束標(biāo)記的時候,XML把它稱為“空元素”,必須用這樣的寫法:〈空元素名/〉,如果元素中含有屬性時寫法則為:〈空元素名屬性名=“屬性值”/〉。

11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)4.標(biāo)記之間不得交叉。在以前的HTML文件中,可以這樣寫:

〈B〉〈H〉XXXXXXX〈/B〉〈/H〉,〈B〉和〈H〉標(biāo)記之間有相互重疊的區(qū)域,而在XML中,是嚴(yán)格禁止這樣標(biāo)記交錯的寫法,標(biāo)記必須以規(guī)則性的次序來出現(xiàn)。5.屬性值必須要用“”號括起來。如第一個例子中的“1.0”、“gb2312”、“人民幣”。都是用“”號括起來了的,不能漏掉。6.控制標(biāo)記、指令和屬性名稱等英文要區(qū)分大小寫。與HTML不同的是,在HTML中,類似〈B〉和〈b〉的標(biāo)記含義是一樣的,而在XML中,類似〈name〉、〈NAME〉或〈Name〉這樣的標(biāo)記是不同的。11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)7.在HTML文件中,如果要瀏覽器原封不動地將所輸入的東西顯示出來,可以將這些東西放到〈pre〉〈/pre〉或者〈xmp〉〈/xmp〉標(biāo)記中間。這對于創(chuàng)建HTML教學(xué)的網(wǎng)頁是必不可少的,因為網(wǎng)頁中要顯示HTML的源代碼。而在XML中,要實現(xiàn)這樣的功能,就必須使用CDATA標(biāo)記。

8.XML處理空白字符和HTML不一樣。HTML標(biāo)準(zhǔn)規(guī)定,不管有多少個空白,都當(dāng)作一個空白來處理;而在XML中規(guī)定,所有標(biāo)記以外的空白,解析器都要忠實地交給下游的應(yīng)用程序處理。這樣,有時必須摒棄編寫HTML文件時的縮排習(xí)慣,因為縮排的空格,解析器也要處理。11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)符合上述規(guī)定的XML文件就是Well-Formed的XML文件。這是編寫XML文件的最基本要求??梢钥吹絏ML文件的語法規(guī)定比HTML要嚴(yán)格多了。由于有這樣的嚴(yán)格規(guī)定,軟件工程師編寫XML的解析器就容易多了,不像編寫HTML語言的解析器,必須費(fèi)盡心思去適應(yīng)不同的網(wǎng)頁寫法,提高自己瀏覽器的適應(yīng)能力。實際上,這對于我們初學(xué)者來說,也是一件好事。該怎樣就怎樣,不必像原來那樣去疑惑各種HTML的寫法。

11.1XML格式Xml的標(biāo)準(zhǔn)結(jié)構(gòu)11.1XML格式Xml的實例11.1XML格式Xml的實例11.1XML格式11.1XML格式11.2JSON格式Json的定義Json構(gòu)建的結(jié)構(gòu)Json的具體形式Json與Xml的比較Json實例11.2JSON格式Json的定義11.2JSON格式Json的定義JSON(JavaScriptObjectNotation)是一種輕量級的數(shù)據(jù)交換格式。易于人閱讀和編寫。同時也易于機(jī)器解析和生成。它基于JavaScript(StandardECMA-2623rdEdition-December1999)的一個子集。JSON采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C,

C++,

C#,

Java,JavaScript,

Perl,

Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。

11.2JSON格式Json的定義11.2JSON格式Json構(gòu)建的結(jié)構(gòu)1.“名稱/值”對的集合(Acollectionofname/valuepairs)。不同的語言中,它被理解為對象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hashtable),有鍵列表(keyedlist),或者關(guān)聯(lián)數(shù)組

(associativearray)。

2.值的有序列表(Anorderedlistofvalues)。在大部分語言中,它被理解為數(shù)組(array)。

這些都是常見的數(shù)據(jù)結(jié)構(gòu)。事實上大部分現(xiàn)代計算機(jī)語言都以某種形式支持它們。這使得一種數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語言之間交換成為可能。

11.2JSON格式Json構(gòu)建的結(jié)構(gòu)11.2JSON格式Json的具體形式1、對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結(jié)束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值’對”之間使用“,”(逗號)分隔。

11.2JSON格式Json的具體形式11.2JSON格式Json的具體形式2.數(shù)組是值(value)的有序集合。一個數(shù)組以“[”(左中括號)開始,“]”(右中括號)結(jié)束。值之間使用“,”(逗號)分隔。

11.2JSON格式Json的具體形式11.2JSON格式Json的具體形式3、值(value)可以是雙引號括起來的字符串(string)、數(shù)值(number)、true、false、

null、對象(object)或者數(shù)組(array)。這些結(jié)構(gòu)可以嵌套。

。

11.2JSON格式Json的具體形式11.2JSON格式Json的具體形式4、字符串(string)是由雙引號包圍的任意數(shù)量Unicode字符的集合,使用反斜線轉(zhuǎn)義。一個字符(character)即一個單獨(dú)的字符串(characterstring)。

字符串(string)與C或者Java的字符串非常相似。

11.2JSON格式Json的具體形式11.2JSON格式Json的具體形式5、數(shù)值(number)也與C或者Java的數(shù)值非常相似。除去未曾使用的八進(jìn)制與十六進(jìn)制格式。除去一些編碼細(xì)節(jié)。

11.2JSON格式Json的具體形式11.2JSON格式Json與Xml的比較◆可讀性

JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規(guī)范的標(biāo)簽形式,很難分出勝負(fù)。

◆可擴(kuò)展性

XML天生有很好的擴(kuò)展性,JSON當(dāng)然也有,沒有什么是XML能擴(kuò)展,JSON不能的。不過JSON在Javascript主場作戰(zhàn),可以存儲Javascript復(fù)合對象,有著xml不可比擬的優(yōu)勢。

◆編碼難度

XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有提供的工具。無工具的情況下,相信熟練的開發(fā)人員一樣能很快的寫出想要的xml文檔和JSON字符串,不過,xml文檔要多很多結(jié)構(gòu)上的字符。

◆解碼難度

XML的解析得考慮子節(jié)點(diǎn)父節(jié)點(diǎn),而JSON的解析難度幾乎為0。11.2JSON格式Json與Xml的比較11.2JSON格式Json實例XML和JSON都使用結(jié)構(gòu)化方法來標(biāo)記數(shù)據(jù),下面來做一個簡單的比較。

現(xiàn)假設(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實例11.2JSON格式Json實例用JSON表示如下:

{

"name":"張三",

"password":"123456",

"department":"技術(shù)部",

"sex":"男",

"old":30

}

與XML一樣,JSON也是基于文本的,且它們都使用Unicode編碼,同樣具有可讀性。XML比較適合于標(biāo)記文檔,而JSON卻更適合于時行數(shù)據(jù)交換處理。

11.2JSON格式Json實例11.3讀寫XML的常用類在java環(huán)境下讀取xml文件的方法主要有4種:DOM、SAX、JDOM、JAXB

DOM

SAX

JDOM

JAXB

11.3讀寫XML的常用類在java環(huán)境下讀取xml文件的11.3讀寫XML的常用類DOM

(DocumentObjectModel)此方法主要由W3C提供,它將xml文件全部讀入內(nèi)存中,然后將各個元素組成一棵數(shù)據(jù)樹,以便快速的訪問各個節(jié)點(diǎn)。因此非常消耗系統(tǒng)性能,對比較大的文檔不適宜采用DOM方法來解析。DOMAPI直接沿襲了XML規(guī)范。每個結(jié)點(diǎn)都可以擴(kuò)展的基于Node的接口,就多態(tài)性的觀點(diǎn)來講,它是優(yōu)秀的,但是在Java語言中的應(yīng)用不方便,并且可讀性不強(qiáng)。

11.3讀寫XML的常用類DOM(DocumentOb11.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的常用類DOM(DocumentOb11.3讀寫XML的常用類SAX(SimpleAPIforXML)此方法主要由XML-DEV郵件列表的成員開發(fā)的,SAX是基于事件的方法,它很類似于標(biāo)簽庫的處理機(jī)制,在標(biāo)簽開始、結(jié)束以及錯誤發(fā)生等等地方調(diào)用相應(yīng)的接口實現(xiàn)方法,不是全部文檔都讀入內(nèi)存。SAX具有優(yōu)異的性能和利用更少的存儲空間特點(diǎn)。SAX的設(shè)計只考慮了功能的強(qiáng)大性,卻沒有考慮程序員使用起來是否方便。使用必須擴(kuò)展ContentHandler、ErrorHandler、DTDHandler等,但是必須擴(kuò)展ContentHandler(或者DefaultHandler)。11.3讀寫XML的常用類SAX(SimpleAPIf11.3讀寫XML的常用類SAX(SimpleAPIforXML)取得元素數(shù)據(jù)的方法——characters

取得元素數(shù)據(jù)中的空白的方法——ignorableWhitespace

在解析到處理指令時調(diào)用的方法——processingInstruction

當(dāng)未驗證解析器忽略實體時調(diào)用的方法——skippedEntity

運(yùn)行時,只需要使用下列代碼:MySAXParsermySAXParser=newMySAXParser();mySAXParser.parserXMLFile("SutInfo.xml");11.3讀寫XML的常用類SAX(SimpleAPIf11.3讀寫XML的常用類JDOM

JDOM的處理方式有些類似于DOM,但它主要是用SAX實現(xiàn)的。JDOM用Java的數(shù)據(jù)類型來定義操作數(shù)據(jù)樹的各個節(jié)點(diǎn)。JDOM的性能也很優(yōu)越。

11.3讀寫XML的常用類JD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論