JSON 和XML

什麼是 JSON ?

  • JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation)
  • JSON 是輕量級的文本數據交換格式
  • JSON 獨立於語言 *
  • JSON 具有自我描述性,更易理解

JSON建構有兩種結構:
json簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組2種結構,通過這兩種結構可以表示各種複雜的結構
1、對象:對象在js中表示爲“{}”擴起來的內容,數據結構爲 {key:value,key:value,...}的鍵值對的結構,在面向對象的語言中,key爲對象的屬性,value爲對應的屬性值,所以很容易理解,取值方法爲 對象.key 獲取屬性值,這個屬性值的類型可以是 數字、字符串、數組、對象幾種。
2、數組:數組在js中是中括號“[]”擴起來的內容,數據結構爲 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數字、字符串、數組、對象幾種。
{
"employees": [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName":"Carter" }
]
}

JSON 語法規則

  • 數據在名稱/值對中
  • 數據由逗號分隔
  • 花括號保存對象
  • 方括號保存數組

JSON 值可以是:

  • 數字(整數或浮點數)
  • 字符串(在雙引號中)
  • 邏輯值(true 或 false)
  • 數組(在方括號中)
  • 對象(在花括號中)
  • null


什麼是 XML?

  • XML 指可擴展標記語言(EXtensible Markup Language)
  • XML 是一種標記語言,很類似 HTML
  • XML 的設計宗旨是傳輸數據,而非顯示數據
  • XML 標籤沒有被預定義。您需要自行定義標籤
  • XML 被設計爲具有自我描述性
  • XML 是 W3C 的推薦標

XML的解析方式有兩種:
一是通過文檔模型解析,也就是通過父標籤索引出一組標記。例如:xmlData.getElementsByTagName("tagName"),但是這樣是要在預先知道文檔結構的情況下使用,無法進行通用的封裝。
另外一種方法是遍歷節點(document 以及 childNodes)。這個可以通過遞歸來實現,不過解析出來的數據仍舊是形式各異,往往也不能滿足預先的要求。
<note>
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
    </note>

XML特性:

1.XML 數據以純文本格式進行存儲,因此提供了一種獨立於軟件和硬件的數據存儲方法。

   2.XML 文檔必須包含根元素。該元素是所有其他元素的父元素。
   3.在 XML 中,省略關閉標籤是非法的。所有元素都必須有關閉標籤。
   4.XML 標籤對大小寫敏感。
   5.在 XML 中,所有元素都必須彼此正確地嵌套。
   6.在 XML 中,XML 的屬性值須加引號,不過單引號和雙引號均可使用。
註釋:如果屬性值本身包含雙引號,那麼有必要使用單引號包圍它。
在 HTML 中,屬性用起來很便利,但是在 XML 中,您應該儘量避免使用屬性。如果信息感覺起來很像數據,那麼請使用子元素吧。
元數據(有關數據的數據)應當存儲爲屬性,而數據本身應當存儲爲元素。

附:下面的三個 XML 文檔包含完全相同的信息:

第一個例子中使用了 date 屬性:

<note date="08/08/2008">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note> 

第二個例子中使用了 date 元素:

<note>
<date>08/08/2008</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note> 

第三個例子中使用了擴展的 date 元素(這是我的最愛):

<note>
<date>
  <day>08</day>
  <month>08</month>
  <year>2008</year>
</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

   7.在 XML 中,一些字符擁有特殊的意義。

   附:在 XML 中,有 5 個預定義的實體引用:

&lt; < 小於
&gt; > 大於
&amp; & 和號
&apos; ' 單引號
&quot; " 引號
註釋:在 XML 中,只有字符 "<" 和 "&" 確實是非法的。大於號是合法的,但是用實體引用來代替它是一個好習慣。
8.

在 XML 中編寫註釋的語法與 HTML 的語法很相似:

<!-- This is a comment --> 

9.HTML 會把多個連續的空格字符裁減(合併)爲一個,在 XML 中,文檔中的空格不會被刪節。


XML實例

上圖表示下面的 XML 中的一本書:

<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title lang="en">Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore>

例子中的根元素是 <bookstore>。文檔中的所有 <book> 元素都被包含在 <bookstore> 中。

<book> 元素有 4 個子元素:<title>、< author>、<year>、<price>





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章