目錄html
XMLpython
DTD(文檔類型定義)web
DTD實體json
JSON後端
XML和JSON的區別 瀏覽器
XML的優缺點服務器
JSON的優缺點函數
XML和JSON都是web存儲和傳輸過程當中數據的格式,其中JSON 使用比較普遍,主要用來先後端交互數據。spa
XML(Extensible Markup Language)擴展標記語言 ,是一種經常使用的標記語言,用於標記電子文件使其具備結構性,能夠用來標記數據、定義數據類型,是一種容許用戶對本身的標記語言進行定義的源語言。XML和SGML都是SGML(Standard Generalized Markup Language)。 XML使用 DTD(document type definition)文檔類型定義來組織數據;格式統一,跨平臺和語言,早已成爲業界公認的標準。
XML是標準通用標記語言 (SGML) 的子集,很是適合 Web 傳輸。XML 提供統一的方法來描述和交換獨立於應用程序或供應商的結構化數據。
#XML聲明 <?xml version="1.0" encoding="UTF-8"?> #文檔類型定義DTD <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> #文檔元素 <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Hello,word!</body> </note>
XML文檔的構建模塊
全部的 XML 文檔(以及 HTML 文檔)均由如下簡單的構建模塊構成:
下面是每一個構建模塊的簡要描述。
1:元素
元素是 XML 以及 HTML 文檔的主要構建模塊,元素可包含文本、其餘元素或者是空的。
實例:
<body>body text in between</body>
空的 HTML 元素的例子是 <hr>、<br> 以及 <img>。
2:屬性
屬性可提供有關元素的額外信息
實例:
<img src="computer.gif" />
3:實體
實體是用來定義普通文本的變量。實體引用是對實體的引用。
4:PCDATA
PCDATA 的意思是被解析的字符數據(parsed character data)。
PCDATA 是會被解析器解析的文本。這些文本將被解析器檢查實體以及標記。
5:CDATA
CDATA 的意思是字符數據(character data)。
CDATA 是不會被解析器解析的文本。
DTD(文檔類型定義)的做用是定義 XML 文檔的合法構建模塊。
DTD 能夠在 XML 文檔內聲明,也能夠外部引用。
1:內部聲明:<!DOCTYPE 根元素 [元素聲明] >
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
2:外部聲明(引用外部DTD):<!DOCTYPE 根元素 SYSTEM "文件名">
<?xml version="1.0"?> <!DOCTYPE note SYSTEM "http://127.0.0.1/note.dtd"> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> #而http://127.0.0.1/note.dtd的內容爲 <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
DTD實體是用於定義引用普通文本或特殊字符的快捷方式的變量,能夠 內部聲明 或 外部引用。
實體又分爲通常實體和參數實體
內部實體聲明:<!ENTITY 實體名稱 "實體的值">
#通常實體 <?xml version="1.0"?> <!DOCTYPE test [ <!ENTITY writer "Bill Gates"> <!ENTITY copyright "Copyright W3School.com.cn"> ]> <test>&writer;©right;</test>
外部實體聲明:<!ENTITY 實體名稱 SYSTEM "URI">
#通常實體 <?xml version="1.0"?> <!DOCTYPE test [ <!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd"> <!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd"> ]> <author>&writer;©right;</author> #參數實體 <?xml version="1.0"?> <!DOCTYPE test [ <!ENTITY %writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd"> <!ENTITY %copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd"> ]> <author>%writer;%copyright;</author>
JSON全稱JavaScaript對象表示法(JavaScript Object Notation),是存儲和交換文本信息的語法。具備文本量更小、更快和更易解析的特色。Json和HTML不同,HTML主要用於顯示數據,JSON主要用於傳遞數據,因此通常做爲數據的查詢接口。
在 JS 語言中,一切都是對象。所以,任何支持的類型均可以經過 JSON 來表示,例如字符串、數字、對象、數組等。可是對象和數組是比較特殊且經常使用的兩種類型:
JSON鍵值對錶
{ "name":"xie", "sex" :"man", "id" : "66" } 注意: ""和值之間不能有空格,否則取值的時候會出錯
JSON數組
表示一: [ { "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" }] }
對於表示法一和表示法二方法表示的JSON數據,能夠採用下面方法讀取JSON數據
1.json是上面的表示法一 ,2.json是上面的表示法二。能夠看出,雖然數據是同樣的,可是數據讀取出來的排序是不同的。
查詢列的話直接 ['name'] ,查詢行的話data.iloc[0] 表示第一行,或者 data.loc['1'] 表示打印出行名1的那行
而對於表示法三表示的數據,則能夠經過下面的方法讀取。把數據讀取在 jsonObject 對象中,而後訪問數據的話,一層一層的訪問。
jsonString是JSON的字符串格式數據,若是沒有解碼,調用decode() 函數便可
json.loads( jsonString )
XML的優勢:
XML的缺點:
JSON的優勢:
JSON的缺點: