亞寵展、全球?qū)櫸锂a(chǎn)業(yè)風(fēng)向標(biāo)——亞洲寵物展覽會深度解析
870
2022-05-29
目錄
XML
DTD(文檔類型定義)
DTD聲明
DTD實體
JSON
使用python解析JSON數(shù)據(jù)
XML和JSON的區(qū)別
XML的優(yōu)缺點
JSON的優(yōu)缺點
XML和JSON都是web存儲和傳輸過程中數(shù)據(jù)的格式,其中JSON?使用比較廣泛,主要用來前后端交互數(shù)據(jù)。
XML
XML(Extensible Markup Language)擴(kuò)展標(biāo)記語言 ,是一種常用的標(biāo)記語言,用于標(biāo)記電子文件使其具有結(jié)構(gòu)性,可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進(jìn)行定義的源語言。 XML使用 DTD(document type definition)文檔類型定義來組織數(shù)據(jù);格式統(tǒng)一,跨平臺和語言,早已成為業(yè)界公認(rèn)的標(biāo)準(zhǔn)。XML是標(biāo)準(zhǔn)通用標(biāo)記語言 (SGML) 的子集,非常適合 Web 傳輸。XML 提供統(tǒng)一的方法來描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。
#XML聲明
#文檔類型定義DTD
]>
#文檔元素
XML文檔的構(gòu)建模塊
所有的 XML 文檔(以及 HTML 文檔)均由以下簡單的構(gòu)建模塊構(gòu)成:
元素
屬性
實體
PCDATA
CDATA
下面是每個構(gòu)建模塊的簡要描述。
1:元素
元素是 XML 以及 HTML 文檔的主要構(gòu)建模塊,元素可包含文本、其他元素或者是空的。
實例:
body text in between空的 HTML 元素的例子是
2:屬性
屬性可提供有關(guān)元素的額外信息
實例:
3:實體
實體是用來定義普通文本的變量。實體引用是對實體的引用。
4:PCDATA
PCDATA 的意思是被解析的字符數(shù)據(jù)(parsed character data)。
PCDATA 是會被解析器解析的文本。這些文本將被解析器檢查實體以及標(biāo)記。
5:CDATA
CDATA 的意思是字符數(shù)據(jù)(character data)。
CDATA 是不會被解析器解析的文本。
DTD(文檔類型定義)
DTD(文檔類型定義)的作用是定義 XML 文檔的合法構(gòu)建模塊。
DTD 可以在 XML 文檔內(nèi)聲明,也可以外部引用。
DTD聲明
1:內(nèi)部聲明:
]>
2:外部聲明(引用外部DTD):
#而http://127.0.0.1/note.dtd的內(nèi)容為
DTD實體
DTD實體是用于定義引用普通文本或特殊字符的快捷方式的變量,可分為內(nèi)部實體和外部實體。
內(nèi)部實體:
外部實體:
內(nèi)外部實體又可分為?一般實體?和?參數(shù)實體
一般實體的聲明語法:? ? ? ? ? ? ? ? ? 引用實體的方式:&實體名;
參數(shù)實體只能在DTD中使用,參數(shù)實體的聲明格式: ? ? ? ? 引用實體的方式:%實體名;
%normal4;
]>
而且參數(shù)實體還能嵌套定義,但需要注意的是,內(nèi)層的定義的參數(shù)實體% 需要進(jìn)行HTML轉(zhuǎn)義,否則會出現(xiàn)解析錯誤。
'>
]>
內(nèi)部實體聲明:
一般實體
一般實體
]>
參數(shù)實體
]>
外部實體聲明
一般實體
]>
參數(shù)實體
]>
JSON
JSON全稱JavaScaript對象表示法(JavaScript Object Notation),是存儲和交換文本信息的語法。具有文本量更小、更快和更易解析的特點。Json和HTML不一樣,HTML主要用于顯示數(shù)據(jù),JSON主要用于傳遞數(shù)據(jù),所以一般作為數(shù)據(jù)的查詢接口。
在 JS 語言中,一切都是對象。因此,任何支持的類型都可以通過 JSON 來表示,例如字符串、數(shù)字、對象、數(shù)組等。對象和數(shù)組是比較特殊且常用的兩種類型:
對象表示為鍵值對
數(shù)據(jù)由逗號分隔
花括號保存對象
方括號保存數(shù)組
JSON鍵值對表
{ "name":"xie",
"sex" :"man",
"id" : "66" }
注意: ""和值之間不能有空格,不然取值的時候會出錯
JSON數(shù)組
表示一:
[ { "name":"xie",
"sex" :"man",
"id" : "66" },
{ "name":"xiao",
"sex" :"woman",
"id" : "88" },
{ "name":"hong",
"sex" :"woman",
"id" : "77" }]
表示二:
{
"name":["xie","xiao","hong"],
"sex" :["man","woman","woman"],
"id" :["66","88","77"]
}
表示三:
{
"student":[ { "name":"xie",
"sex" :"man",
"id" : "66" },
{ "name":"xiao",
"sex" :"woman",
"id" : "88" },
{ "name":"hong",
"sex" :"woman",
"id" : "77" }]
}
使用python解析JSON數(shù)據(jù)
對于表示法一和表示法二方法表示的JSON數(shù)據(jù),可以采用下面方法讀取JSON數(shù)據(jù)
1.json是上面的表示法一 ,2.json是上面的表示法二。可以看出,雖然數(shù)據(jù)是一樣的,但是數(shù)據(jù)讀取出來的排序是不一樣的。
查詢列的話直接 ['name']? ,查詢行的話data.iloc[0]?表示第一行,或者?data.loc['1']?表示打印出行名1的那行
而對于表示法三表示的數(shù)據(jù),則可以通過下面的方法讀取。把數(shù)據(jù)讀取在?jsonObject?對象中,然后訪問數(shù)據(jù)的話,一層一層的訪問。
jsonString是JSON的字符串格式數(shù)據(jù),如果沒有解碼,調(diào)用decode() 函數(shù)即可
json.loads( jsonString )
XML和JSON的區(qū)別
XML的優(yōu)缺點
XML的優(yōu)點:
格式統(tǒng)一,符合標(biāo)準(zhǔn);
容易與其他系統(tǒng)進(jìn)行遠(yuǎn)程交互,數(shù)據(jù)共享比較方便。
XML的缺點:
XML文件龐大,文件格式復(fù)雜,傳輸占帶寬;
服務(wù)器端和客戶端都需要花費(fèi)大量代碼來解析XML,導(dǎo)致服務(wù)器端和客戶端代碼變得異常復(fù)雜且不易維護(hù);
客戶端不同瀏覽器之間解析XML的方式不一致,需要重復(fù)編寫很多代碼;
服務(wù)器端和客戶端解析XML花費(fèi)較多的資源和時間。
JSON的優(yōu)缺點
JSON的優(yōu)點:
數(shù)據(jù)格式比較簡單,易于讀寫,格式都是壓縮的,占用帶寬小;
易于解析,客戶端JavaScript可以簡單的通過eval()進(jìn)行JSON數(shù)據(jù)的讀取;
支持多種語言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服務(wù)器端語言,便于服務(wù)器端的解析;
在PHP世界,已經(jīng)有PHP-JSON和JSON-PHP出現(xiàn)了,偏于PHP序列化后的程序直接調(diào)用,PHP服務(wù)器端的對象、數(shù)組等能直接生成JSON格式,便于客戶端的訪問提取;
因為JSON格式能直接為服務(wù)器端代碼使用,大大簡化了服務(wù)器端和客戶端的代碼開發(fā)量,且完成任務(wù)不變,并且易于維護(hù)。
JSON的缺點:
沒有XML格式這么推廣的深入人心和喜用廣泛,沒有XML那么通用性;
JSON格式目前在Web Service中推廣還屬于初級階段。
相關(guān)文章:XXE(XML外部實體注入)
XXE漏洞利用
JSON XML
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。