XML詳解一XML語法
阿新 • • 發佈:2018-11-03
XML指可擴充套件標記語言很類似 HTML,被設計用來傳輸和儲存資料而非顯示資料,XML標籤沒有被預定義需要自行定義標籤,標籤具有自我描述性,同時XML也是 W3C 的推薦標準。
先來寫一個XML指令碼demo.xml:
<?xml version="1.0" encoding="UTF-8"?> <!-- 版本1.0 編碼utf-8 --> <book > <title>xml</title> <description>xml可擴充套件標記語言</description> <year>1998</year> <price>30.00</price> </book>
在瀏覽器執行demo.xml:
1.如上圖就是一個XML檔案,XML是純文字的,標籤不像HTML是預定義標籤,需要自行定義如:<note></note>、<標籤></標籤>、<qwer></qwer>,注意:XML的根標籤(最外層標籤)有且只能有一對!也就是上面程式碼的<book></book>標籤
2.XML的標籤可以是中文,也可以是字母,對大小寫敏感推薦小寫,這裡需要注意一下的是XML的語法嚴格,標籤必須成對出現即有開始又有結束,比如<title>xml 如果沒有閉合標籤就會報錯:
也有一種特殊的情況就是自閉和標籤,如:
<?xml version="1.0" encoding="UTF-8"?> <!-- 版本1.0 編碼utf-8 --> <book > <title>xml</title> <description>xml可擴充套件標記語言</description> <year>1998</year> <price>30.00</price> <a /> <!-- 自閉和標籤,瀏覽器可以正常解析--> </book>
3.XML標籤可以巢狀但是不能交叉巢狀:
<?xml version="1.0" encoding="UTF-8"?> <!-- 正確巢狀 --> <book > <title> <description>xml可擴充套件標記語言</description> </title> </book> <!-- 錯誤巢狀 --> <?xml version="1.0" encoding="UTF-8"?> <book > <title><description></title> xml可擴充套件標記語言</description> </book>
4.XML標籤也可以擁有屬性,屬性必須有值並加引號:
<?xml version="1.0" encoding="UTF-8"?> <book > <!-- 屬性名自定義,必須有值並加引號,推薦使用小寫 --> <title book_id="1">xml</title> <description>xml可擴充套件標記語言</description> <year>1998</year> <price>30.00</price> </book>
5.XML中實體引用:
< | < | 小於 |
> | > | 大於 |
& | & | 和號 |
' | ' | 單引號 |
" | " | 引號 |
在XML中如果你把字元 <放在 XML 元素中會發生錯誤,如:<description>5 < 10</description>,這是因為解析器會把<當作新元素的開始,為了避免這種錯誤就需要使用實體引用:
<?xml version="1.0" encoding="UTF-8"?> <book> <title>xml</title> <description>5 < 10</description> </book>
在 XML 中只有字元 < 和 &"確實是非法的,但是用實體引用來代替它是一個好習慣
6.XML CDATA
如果一大段內容包含字母數字漢字特殊符號等等,為了可以正常解析此時只使用實體引用並不現實,就需要用到<![CDATA[]]>:
<?xml version="1.0" encoding="UTF-8"?> <book> <title>xml</title> <content><![CDATA[一大段內容包含123qwer&<<<*;/]]></content> </book>
這樣在上面的程式碼中,解析器會忽略 CDATA 部分中的所有內容而直接原模原樣顯示
注意注意注意:在 XML中換行會被儲存視為一個節點,所以正常的xml檔案都是一行搞定:
<?xml version="1.0" encoding="UTF-8"?> <bookstore><book book_id="1"><title>php</title><author><![CDATA[PHP是世界上最好的程式語言.emmm...]]></author></book></bookstore>