2010年1月29日

PHP的XML文件操作

XML簡介
XML, eXtensible Markup Language(可延伸標記語言),是一種可以創建自訂標記符號(Tags)的標記語言,是用於表示結構化資訊的一種標準文本格式,它由W3C(全球資訊網標準維護組織)創建,用來克服HTML的侷限。和HTML一樣,XML基於標準通用標記語言(Standard Generalized Markup Language, SGML),SGML是一種在Web發明之前就早已存在的用標記來描述檔案資料的通用語言,它十分龐大且難於學習和使用。為了解決SGML過於複雜的特點,提出了HTML語言,在Web領域成為標準語言。但近年來,隨著Web應用的不斷深入,HTML在需求廣泛的應用中顯得捉襟見肘,於是Web標準化組織W3C建議使用一種精簡的SGML版本ーXML。XML檔案只儲存了資料,是很有規律的結構化檔案,所有的資訊按照某種關係排列,不會看起來雜亂無章,層次結構非常明確,但沒有定義如何顯示這些資料,以什麼樣的字體、顏色來顯示。這樣的檔案結構,層次非常清晰,我們可以稱之為「檔案樹」。

XML的特點
XML繼承了SGML的許多特性,首先是可擴展性,這正是XML功能強大的原因,在HTML中有許多固定的標記,我們必須記住然後使用它們,而不能使用HTML規範裡沒有的標記,它是一個定型的標記語言。XML允許使用者創建和使用它們自己的標記而不是HTML的有限詞彙表,這一點至關重要,企業可以用XML為電子商務和供應鏈集成等應用定義自己的標記語言,甚至特定行業一起來定義該領域的特殊標記語言,作為該領域資訊共用與資料交換的基礎。

其次是靈活性。HTML很難進一步發展,就是因為它是格式、超文字和圖形化使用者介面語義的混合,要同時發展這些混合在一起的功能是很困難的。而XML更像是一個小型的資料庫,提供了一種結構化的資料表示方式,使得使用者介面分離於結構化資料。所以,Web用戶所追求的許多先進功能在XML環境下更容易實現。

第三是自我描述性。XML檔案通常包含一個檔案型別宣告,因而XML檔案是自我描述的。不僅人能讀懂XML檔案,電腦也能處理。XML表示資料的方式真正做到了獨立於應用系統,並且資料能夠重用,XML檔案被看作是檔案的資料庫化和資料的檔案化,因此XML成為新一代不同系統中資料傳遞的標準格式。

除了上述特性之外,XML還具有簡明性。它只有SGML約20%的複雜性,但卻具有SGML功能的約80%,XML比完整的SGML簡單得多,易學、易用並且易實現。另外,XML也吸收了多年來在Web上使用HTML的經驗,XML支持世界上幾乎所有的主要語言,並且不同語言的文字可以在同一檔案中混合使用,應用XML的軟體能處理這些語言的任何組合。

簡單的XML操作
在PHP5引入了一種用於讀寫XML的新應用程式設計發展介面(API):SimpleXML。SimpleXML提供了一種簡單、直覺化的方法來處理XML。它只有一個單一類型的類別,3個函數和6個方法。SimpleXMLElement類是這個擴展中所有操作的核心類。可以用new關鍵字直接創件這種類的物件或是使用simplexml_load_file()或simplexml_load_string()函數傳回這種類的物件。

在SimpleXML中,可以直接通過元素的名稱來存取特定的元素。當一個檔案被載入SimpleXML時,檔案被看成是一個SimpleXML物件,檔案中的所有元素都被看成是該物件的屬性。SimpleXMLElement物件的屬性是動態的,因為這些屬性是由物件決定的,而不是由類別本身決定的。

利用SimpleXML修改元素內容非常方便,我們可以改變或移除樹中的某個元素,但是不能直接在樹中添加一個元素。要添加一個元素,需要使用DOMXML擴展模組的互通性。我們利用SimpleXML的屬性指派值方法來直接編輯一個元素的內容,要注意的是如果檔案中有多個元素名一樣的元素,如果沒有使用索引來指定要編輯哪個元素時,PHP將發出個警告。強烈建議使用索引來編輯元素,除非你對檔案的結果非常確定。另外,可以用PHP內建函數unset()來將一個元素行樹中移除。unset()的參數必須是一個SimpleXMLElement,用屬性方法來存取要移除的元素。

DOMXML擴展模組有save()方法,可以將XML資料儲存成為文件,我們可以將SimpleXML物件導入DOMXML物件中,然後使用save()儲存。

XML是用來存放資料的,它不是HTML的替代品。XML和HTML是兩種不同用途的語言。HTML是與顯示資訊相關的,XML則是與描述資訊相關的。

沒有留言:

張貼留言