PHP隨著發展,功能也在強大,文章介紹主要介紹PHP工具包的作用,希望可以給大家帶來幫助。如今人人鼓吹XML是Web開發者最好的朋友,有了XML的幫忙,後者即可輕松地格式化和顯示來自幾乎任何數據源的數據。但是,對動態內容而言,格式優良的數據卻還遠遠談不上達到理想狀態。大多數的Web開發者都會告訴你,今天的網絡上沒有動態內容怎麼能行!問題是:“到底該如何用XML創建動態內容呢?”
下面我會給讀者演示一個簡單的示例,通過這個例子即可說明如何用PHP工具包把XML文檔解析為HTML。然後我會介紹一些PHP的其他XML概念。用PHP工具包解析 XML很簡單,操作起來很直觀但卻需要對細節有所解釋。一旦真正掌握了應用的要領,你肯定會驚奇自己怎麼不早想到把它們倆攏一塊兒來。
概述
PHP 用expat這種XML工具包,通過C語言來解析XML。這個工具包的函數集同Perl XML解析所采用的函數集是一樣的,此外,這種工具包還是事件驅動型的解析器。這就是說,expat把每個XML標簽或者新一行代碼當作事件的起始,而事件就是函數的觸發器。Expat的安裝非常簡單,如果你正在用著Apache Web服務器,那麼你可以在PHP XML參考頁上找到安裝和下載指南。
用PHP解析XML的基本任務是這樣的:首先,創建XML解析器的一個實例。接著,定義處理觸發事件的函數,比如開始或者結束標簽等。隨後,定義實際意義的數據處理程序。最後,打開XML文件,讀取文件數據並解析數據。之後關閉文件釋放XML解析器。
你瞧,就像我說的那樣,這套操作過程沒什麼特別的。不過,在我們討論具體的示例之前先了解以下的一些警示:Expat不對XML進行檢驗。這意味著只要XML文件格式正確——所有的元素嵌套得當、開始和關閉標簽沒有任何錯誤——它就會被解析。Expat可不管XML是否遵守XML文件頭中引用的標准或者定義。Expat把XML標簽全部轉換為大寫字母。如果你的腳本在標簽名和其他內容上大小寫字母混用可就要小心了。PHP是在magic quotes設置啟用的情況下編譯而成,那麼復雜的XML文件不會得到正確的解析。要是magic quotes不是默認設置,你就當我沒說。
基本示例
為了把復雜的事情簡單化,我在例子中省略了錯誤檢查和其他一些不必要的東西,當然,你可以在自己的代碼隨心所欲。我假定你早就熟悉PHP及其語法,而我會對 XML函數做一番解釋。首先我會說明腳本程序的含義,接著定義用戶定義函數,實際上這些函數位於引用它們的代碼之前。相關附件:程序清單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.