XML入門

Creabine發表於2016-12-27

工作中遇到一些xml檔案,之前都只是聽過名字,今天來認真瞭解一下它到底是什麼。
部落格來源:W3School

XML簡介

XML是 可擴充套件標記語言 (Extensible Markup Language)
XML也是一種標記語言,很類似HTML
但是,XML被設計用來傳輸和儲存資料;HTML被設計用來顯示資料
XML的標籤沒有被預定義,需要使用者自行定義標籤。
XML被設計為具有自我描述性,是W3C的推薦標準。

由上邊的介紹可知,其實XML和HTML都是標記語言,但是彼此存在的目的不用,作用也不同。HTML旨在顯示資訊,而XML旨在傳輸資訊。

XML是沒有任何行為的。也就是說,XML不會做任何事情,只被用來結構化,儲存以及傳輸資訊

例如,我們把John寫給George的便籤儲存為XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

這條便籤具有自我描述性,能夠顯而易見的看出其中的標題,留言,傳送者,接受者等資訊。

但是這個XML沒做任何事,僅僅是把一條便籤資訊包裝成XML檔案,我們要編寫程式才能傳送接受和顯示這個文件。

XML 是獨立於軟體和硬體的資訊傳輸工具

XML 用途

XML 應用於web開發的許多方面,常用語簡化資料的儲存和共享。

XML 把資料從HTML 分離
如果要在HTML文件中顯示動態資料,那麼每當資料改變時要花時間編輯HTML。

通過XML,資料能儲存在獨立的XML 檔案中。讓HTML專注於佈局和現實,保證修改資料對顯示不做影響即可。

通過幾行javascript,就可以讀取一個外部XML檔案,然後更新HTML中的資料內容。

由於不同的軟體/硬體使用不相容的格式來儲存資料,所以XML提供了獨立的純文字儲存方法,讓不同的程式之間共享資料變得簡單,也讓資料得以在不相容的系統之間進行輕鬆的交換。

也有很多新的Interent語言是通過XML建立的:

  • XHTML - 最新的 HTML 版本
  • WSDL - 用於描述可用的 web service
  • WAP 和 WML - 用於手持裝置的標記語言
  • RSS - 用於 RSS feed 的語言
  • RDF 和 OWL - 用於描述資源和本體

XML 樹結構

XML 文件形成了一種樹結構,可以類比HTML的DOM樹

再看之前那個XML文件例項:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

第一行是XML宣告。它定義了XML的版本(1.0)和所使用的的編碼(ISO-8859-1 = Latin-1/西歐字符集)

接下來通過自定義標籤來表述資訊,可以顯而易見的看出這是一個便籤<note>,其中包含<from><to><heading><body>4個子元素,他們都要用類似的形式來閉合結尾。能看出XML的自我描述性很強。

XML必須包含根元素,它是所有元素的父元素(類比一下,HTML的根元素是<html>元素),其他元素都包含在他裡面。

XML語法

XML元素的標籤 一定要 閉合。
XML宣告不屬於XML本身的組成部分,他不是XML元素,所以不用閉合。
XML對大小寫敏感。

XML也有屬性,寫法跟HTML類似,屬性值要加引號

XML中,有一些字元有特殊意義,不能直接寫,要使用字元實體:

  • < 小於
  • > 大於
  • & 和號
  • ’ 單引號
  • ” 引號

XML中註釋使用和HTML中一致:

<!-- 在這裡寫註釋 -->

在HTML中,多個空格會被縮減合併為1個空格;而XML中,會保留。

XML 元素

XML元素可以包含文字和其他元素。
XML元素有屬性。

XML 命名規則
XML 元素必須遵循以下命名規則:

  • 名稱可以含字母、數字以及其他的字元
  • 名稱不能以數字或者標點符號開始
  • 名稱不能以字元 “xml”(或者 XML、Xml)開始
  • 名稱不能包含空格
  • 可使用任何名稱,沒有保留的字詞。

最好使用<book_title></book_title> 這種命名習慣。

XML元素是可擴充套件的:
在XML中增加資訊,並不會影響原本讀取XML的程式。

XML 屬性

XML元素可以在開始標籤中包含屬性,類似HTML
屬性提供關於元素的額外附加資訊。但是儘量避免使用屬性,改用子元素放置資訊。

例子:

<!-- 使用屬性 -->
<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>

在此我們極力向您傳遞的理念是:後設資料(有關資料的資料)應當儲存為屬性,而資料本身應當儲存為元素。

XML 驗證

擁有正確語法的 XML 被稱為“形式良好”的XML
通過DTD驗證的XML是“合法的XML”

DTD 的作用是定義 XML 文件的結構。

XML 驗證器

XML錯誤會終止你的程式。

XML 瀏覽器支援

幾乎所有的主流瀏覽器均支援 XML 和 XSLT。

檢視 XML 檔案

在所有現代瀏覽器中,均能夠檢視原始的 XML 檔案。

不要指望 XML 檔案會直接顯示為 HTML 頁面。

XMLHttpRequest 物件

XMLHttpRequest物件用於在後臺與伺服器交換資料。

這一串看起來很眼熟有沒有,這不就是ajax嘛!

原來AJAX = “Asynchronous Javascript And XML”,即非同步js和XML。一下子把之前學的東西都接上了。ajax的作用大家都很熟悉了就不贅述了。

所有現代瀏覽器都內建了供讀取和操作XML的XML解析器。
解析器把XML轉換為XML DOM物件 - 可通過javascript操作的物件。

相關文章