關于PHP工具包expat解析XML揭秘
PHP隨著發(fā)展,功能也在強大,文章介紹主要介紹PHP工具包的作用,希望可以給大家?guī)韼椭?。如今人人鼓吹XML是Web開發(fā)者最好的朋友,有了XML的幫忙,后者即可輕松地格式化和顯示來自幾乎任何數(shù)據(jù)源的數(shù)據(jù)。但是,對動態(tài)內(nèi)容而言,格式優(yōu)良的數(shù)據(jù)卻還遠遠談不上達到理想狀態(tài)。大多數(shù)的Web開發(fā)者都會告訴你,今天的網(wǎng)絡上沒有動態(tài)內(nèi)容怎么能行!問題是:“到底該如何用XML創(chuàng)建動態(tài)內(nèi)容呢?”
#T#答案是用動態(tài)內(nèi)容處理語言來解析XML,比如用PHP或者Perl等,從理論上說,這類程序語言是可以出于各種目的利用XML的。無非是采用一些能解析XML的工具包而已。James Clark就提供了一種名叫expat的工具包。expat XML工具包用C語言解析XML,令PHP與XML輕松共舞。PHP是一種專為Web設計的絕佳腳本語言。XML是表示W(wǎng)eb內(nèi)容的標準。兩者聯(lián)手真是要多美有多美!
下面我會給讀者演示一個簡單的示例,通過這個例子即可說明如何用PHP工具包把XML文檔解析為HTML。然后我會介紹一些PHP的其他XML概念。用PHP工具包解析 XML很簡單,操作起來很直觀但卻需要對細節(jié)有所解釋。一旦真正掌握了應用的要領,你肯定會驚奇自己怎么不早想到把它們倆攏一塊兒來。
概述
PHP 用expat這種XML工具包,通過C語言來解析XML。這個工具包的函數(shù)集同Perl XML解析所采用的函數(shù)集是一樣的,此外,這種工具包還是事件驅動型的解析器。這就是說,expat把每個XML標簽或者新一行代碼當作事件的起始,而事件就是函數(shù)的觸發(fā)器。Expat的安裝非常簡單,如果你正在用著Apache Web服務器,那么你可以在PHP XML參考頁上找到安裝和下載指南。
用PHP解析XML的基本任務是這樣的:首先,創(chuàng)建XML解析器的一個實例。接著,定義處理觸發(fā)事件的函數(shù),比如開始或者結束標簽等。隨后,定義實際意義的數(shù)據(jù)處理程序。最后,打開XML文件,讀取文件數(shù)據(jù)并解析數(shù)據(jù)。之后關閉文件釋放XML解析器。
你瞧,就像我說的那樣,這套操作過程沒什么特別的。不過,在我們討論具體的示例之前先了解以下的一些警示:Expat不對XML進行檢驗。這意味著只要XML文件格式正確——所有的元素嵌套得當、開始和關閉標簽沒有任何錯誤——它就會被解析。Expat可不管XML是否遵守XML文件頭中引用的標準或者定義。Expat把XML標簽全部轉換為大寫字母。如果你的腳本在標簽名和其他內(nèi)容上大小寫字母混用可就要小心了。PHP是在magic quotes設置啟用的情況下編譯而成,那么復雜的XML文件不會得到正確的解析。要是magic quotes不是默認設置,你就當我沒說。
基本示例
為了把復雜的事情簡單化,我在例子中省略了錯誤檢查和其他一些不必要的東西,當然,你可以在自己的代碼隨心所欲。我假定你早就熟悉PHP及其語法,而我會對 XML函數(shù)做一番解釋。首先我會說明腳本程序的含義,接著定義用戶定義函數(shù),實際上這些函數(shù)位于引用它們的代碼之前。相關附件:程序清單A 所示為腳本的完整代碼,腳本要解析的XML文檔則是 相關附件:程序清單B。處理之后的輸出結果如表A所示。
- XML Articles
- "Remedial XML for programmers: Basic syntax"
- In this first installment in a three-part series,
- I'll introduce you to XML and its basic syntax.
- "Remedial XML: Enforcing document formats with DTDs"
- To enforce structure requirements for an XML document, you have to turn to one of XML's attendant technologies, data type definition (DTD).
- "Remedial XML: Using XML Schema"
- In this article, we'll briefly touch on the shortcomings of DTDs and discuss the basics of a newer, more powerful standard: XML Schemas.
- "Remedial XML: Say hello to DOM"
- Now it's time to put on your programmer's hat and get acquainted with Document Object Model (DOM),
- which provides easy access to XML documents via a tree-like set of objects.
- "Remedial XML: Learning to play SAX"
- In this fifth installment in our Remedial XML series, I'll introduce you to the SAX API and provide some links to
SAX implementations in several languages.