XML(一) 基礎知識

2021-07-30 09:10:02 字數 3475 閱讀 1394

如果說json是一種輕量級的資料交換格式,那麼xml就是重量級的。xml應用於web開發的許多方面,常用於簡化資料的儲存和共享。永遠要記住,xml跟json一樣是用來儲存傳輸資料的,而非顯示資料,顯示資料是html幹的活。

xml是不作為的,xml不會做任何事情,它僅僅是純文字,是包裝在xml標籤中的純粹的資訊。我們需要編寫軟體或者程式,才能傳送、接收和顯示出這個文件。

舉個簡單的例子,的文章備份就是用xml儲存的(儲存的僅僅是純文字),一旦需要就把它上傳,伺服器應該會有個解析器解析該檔案(xml文件需要軟體解析)。

複製**

<?xml version="1.0" encoding="iso-8859-1"?>

georgeto>

johnfrom>

reminderheading>

don't forget the meeting!body>

note>

我們看到以上的**,是john給george的乙個便簽,被儲存為.xml字尾的檔案。前面說過,xml用於資料的儲存和傳輸,所以當george收到檔案時,就會用特定的解析器去解析(可能生成html檔案),這樣就會直觀地顯示資料。

接著來分析下以上xml檔案的構成。

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

下一行描述文件的根元素(像在說:「本文件是乙個便簽」):

複製**

接下來 4 行描述根的 4 個子元素(to, from, heading 以及 body):

複製**

georgeto>

johnfrom>

reminderheading>

don't forget the meeting!body>

最後一行定義根元素的結尾:

複製**

note>

xml文件形成了乙個樹結構(和html的dom樹類似),xml文件必須包含根元素,該元素是其他所有元素的父元素。

xml語法很簡單,特別是針對有強迫症的童鞋。

所有 xml 元素都須有關閉標籤

xml 標籤對大小寫敏感,必須使用相同的大小寫來編寫開啟標籤和關閉標籤

xml 必須正確地巢狀

xml 文件必須有根元素

xml 的屬性值須加引號

實體引用

xml 中的注釋

在 xml 中,空格會被保留

這裡解釋下6、7、8,5可以參考下一小節。

在xml中,一些字元擁有特殊的意義。如果你把字元<放在xml元素中,會發生錯誤,這是因為解析器會把它當做新元素的開始。比如這樣:

複製**

< george

to>

為避免這樣的錯誤,使用實體引用來代替<字元:

複製**

在xml中,有5個預定義的實體引用。只有字元 "

在xml中編寫注釋的語法和html的語法類似:

複製**

html會把多個連續的空格字元裁減(合併)為乙個,但是xml文件中的空格會被保留(儘管在瀏覽器中沒有顯示):

複製**

文件中: han zichi name>

實際顯示: han zichiname>

xml元素指的是從(且包括)開始標籤直到(且包括)結束標籤的部分。元素可包含其他元素、文字或者兩者的混合物。元素也可以擁有屬性。

複製**

category="children">

harry pottertitle>

j k. rowlingauthor>

2005year>

29.99price>

book>

category="web">

learning xmltitle>

erik t. rayauthor>

2003year>

39.95price>

book>

bookstore>

在上例中,都擁有元素內容,因為它們包含了其他元素。只有文字內容,因為它僅包含文字。在上例中,只有元素擁有屬性(category="children")

xml 命名規則:

名稱可以含字母、數字以及其他的字元

名稱不能以數字或者標點符號開始

名稱不能以字元 「xml」(或者 xml、xml)開始

名稱不能包含空格

推薦用下劃線_來命名,比如

可使用任何名稱,沒有保留的字詞。

xml元素可以在開始標籤中包含屬性,類似html,屬性值必須被引號包圍(單引雙引均可)。屬性(attribute)提供關於元素的額外(附加)資訊。

屬性通常提供不屬於資料組成部分的資訊。在下面的例子中,檔案型別與資料無關,但是對需要處理這個元素的軟體來說卻很重要:

複製**

type="gif">computer.giffile>

xml元素 vs 屬性:

複製**

***="female">

annafirstname>

smithlastname>

person>

female***>

annafirstname>

smithlastname>

person>

在第乙個例子中,*** 是乙個屬性。在第二個例子中,*** 則是乙個子元素。兩個例子均可提供相同的資訊。沒有什麼規矩可以告訴我們什麼時候該使用屬性,而什麼時候該使用子元素。我的經驗是在 html 中,屬性用起來很便利,但是在 xml 中,您應該盡量避免使用屬性。如果資訊感覺起來很像資料,那麼請使用子元素吧

XML基礎知識

好多書籍只介紹建立xml webservice,並沒有詳細介紹xml webservice的工作原理以及各部分 例如iis asp.net 在xml webservice中所起的作用.學習後整理了一下,希望對讀者有所幫助 一 xml webservice作用 xml webservice在應用程式中...

xml基礎知識

xml extensible markup language 即可擴充套件標記語言,它與html一樣,都是sgml standard generalized markup language,標準通用標記語言 xml是internet 環境中跨平台的,依賴於內容的技術,是當前處理結構化文件資訊的有力工...

xml基礎知識

xml extensible markup language 是html的擴充套件標籤語言,xml比html更加靈活,html的標籤是固有的 已經被定義 而xml標籤沒有固定的,所有標籤均可根據實際需要自行定義,但在語法要求上xml比html嚴格。在xml嚴格要求所有標籤必須有開始標籤和結束標籤。x...