PHP 新手入門之XML
1.什么是xml
XML 是可擴(kuò)展標(biāo)記語言(Extensible Markup Language)的縮寫,其中的 標(biāo)記(markup)是關(guān)鍵部分。您可以創(chuàng)建內(nèi)容,然后使用限定標(biāo)記標(biāo)記它,從而使每個(gè)單詞、短語或塊成為可識(shí)別、可分類的信息。您創(chuàng)建的文件,或文檔實(shí)例 由元素(標(biāo)記)和內(nèi)容構(gòu)成。當(dāng)從打印輸出讀取或以電子形式處理文檔時(shí),元素能夠幫助更好地理解文檔。元素的描述性越強(qiáng),文檔各部分越容易識(shí)別。自從出現(xiàn)標(biāo)記至今,帶有標(biāo)記的內(nèi)容就有一個(gè)優(yōu)勢(shì),即在計(jì)算機(jī)系統(tǒng)缺失時(shí),仍然可以通過標(biāo)記理解打印出來數(shù)據(jù)
2.構(gòu)建xml
如前所述,XML 文件由內(nèi)容和標(biāo)記組成。您通過以標(biāo)記包圍內(nèi)容的方式將大部分內(nèi)容包含在元素中。例如,假設(shè)您需要?jiǎng)?chuàng)建一本 XML 烹飪書。您需要用 XML 編寫名為 Ice Cream Sundae 的食譜。為了標(biāo)記食譜名,您需要將這個(gè)文本包含到元素中,即分別在文本的首末兩端添加開始和結(jié)束標(biāo)記。可以將元素命名為 recipename。要標(biāo)記元素的開始標(biāo)記,像這樣將元素名放到尖括號(hào)中(<>):<recipename>。然后輸入文本Ice Cream Sundae。在文本的后面輸入結(jié)束標(biāo)記,即將元素名放在尖括號(hào)內(nèi),然后在元素名前面加上一個(gè)終止斜杠(/),比如:</recipename>。這些標(biāo)記構(gòu)成一個(gè)元素,您可以在元素的內(nèi)部添加內(nèi)容或其他元素。
您可以為某個(gè)文檔或文檔集創(chuàng)建元素名??梢詣?chuàng)建規(guī)則讓元素根據(jù)您的特定需求組合起來。元素名可以是比較具有針對(duì)性的,也可以是比較通用的。您還可以創(chuàng)建決定添加何種元素的規(guī)則。這些規(guī)則可以是嚴(yán)格的,也可以是松散的,這完全由您決定。一定要為文檔創(chuàng)建元素,以識(shí)別您認(rèn)為重要的部分。
3.創(chuàng)建xml
XML 文檔的第一行可以是一個(gè) XML 聲明。這是文件的可選部分,它將文件識(shí)別為 XML 文件,有助于工具和人類識(shí)別 XML(不會(huì)誤認(rèn)為是 SGML 或其他標(biāo)記)??梢詫⑦@個(gè)聲明簡單地寫成 <?xml?>,或包含 XML 版本(<?xml version="1.0"?>),甚至包含字符編碼,比如針對(duì) Unicode 的 <?xml version="1.0" encoding="utf-8"?>。因?yàn)檫@個(gè)聲明必須出現(xiàn)在文件的開頭,所以如果打算將多個(gè)小的 XML 文件合并為一個(gè)大 XML 文件,則可以忽略這個(gè)可選信息
4.創(chuàng)建根元素
根元素的開始和結(jié)束標(biāo)記用于包圍 XML 文檔的內(nèi)容。一個(gè)文件只能有一個(gè)根元素,并且需要使用 “包裝器” 包含它。清單 1 顯示了經(jīng)過刪節(jié)的示例,其中的根元素名為 <recipe>。(參見 下載 小節(jié)獲得完整的 XML 文件)。
5.命名元素
到目前為止,都使用 <recipe> 作為根元素。在 XML 中,先要為元素選擇名稱,然后再根據(jù)這些名稱定義相應(yīng)的 DTD 或 schema。創(chuàng)建名稱時(shí)可以使用英文字母、數(shù)字和特殊字符,比如下劃線(_)。下面給出命名時(shí)需要注意的地方:
· 元素名中不能出現(xiàn)空格。
· 名稱只能以英文字母開始,不能是數(shù)字或符號(hào)。(在第一個(gè)字母之后就可以使用字母、數(shù)字或規(guī)定的符號(hào),或它們的混合)。
· 對(duì)大小寫沒有限制,但前后要保持一致,以免造成混亂。
我們繼續(xù)以前面的示例為例,如果添加了名為 <recipename> 的元素,它將有一個(gè)開始標(biāo)記 <recipename> 和相應(yīng)的結(jié)束標(biāo)記</recipename>。
6.嵌套元素
嵌套 即把某個(gè)元素放到其他元素的內(nèi)部。這些新的元素稱為子 元素,包含它們的元素稱為父 元素。<recipe> 根元素中嵌套有幾個(gè)其他元素,如 清單 3 所示。這些嵌套的子元素包括 <recipename>、<ingredlist> 和 <preptime>。<ingredlist> 元素內(nèi)部包含多個(gè)子元素 <listitem>。XML 文檔可以使用多層嵌套。
一個(gè)常見的語法錯(cuò)誤是父元素和子元素的錯(cuò)誤嵌套。任何子元素都要完全包含在其父元素的開始和結(jié)束標(biāo)記內(nèi)部。每個(gè)同胞(Sibling)元素必須在下一個(gè)同胞元素開始之前結(jié)束
<?xml version="1.0" encoding="UTF-8"?> <recipe> <recipename>Ice Cream Sundae</recipename> <ingredlist> <listitem> <quantity>3</quantity> <itemdescription>chocolate syrup or chocolate fudge</itemdescription> </listitem> <listitem> <quantity>1</quantity> <itemdescription>nuts</itemdescription> </listitem> <listitem> <quantity>1</quantity> <itemdescription>cherry</itemdescription> </listitem> </ingredlist> <preptime>5 minutes</preptime> </recipe>
7.帶有元素和屬性的xml文件
<?xml version="1.0" encoding="UTF-8"?> <recipe type="dessert"> <recipename cuisine="american" servings="1">Ice Cream Sundae</recipename> <preptime>5 minutes</preptime> </recipe>