多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 如何用PHP工具包expat解析XML

如何用PHP工具包expat解析XML

來源:程序員人生   發布時間:2013-12-19 21:50:08 閱讀次數:3791次
如今人人鼓吹XML是Web開發者最好的朋友,有了XML的幫忙,后者即可輕松地格式化和顯示來自幾乎任何數據源的數據。但是,對動態內容而言,格式優良的數據卻還遠遠談不上達到理想狀態。大多數的Web開發者都會告訴你,今天的網絡上沒有動態內容怎么能行!問題是:“到底該如何用XML創建動態內容呢?”
答案是用動態內容處理語言來解析XML,比如用PHP或者Perl等,從理論上說,這類程序語言是可以出于各種目的利用XML的。無非是采用一些能解析XML的工具包而已。James Clark就提供了一種名叫expat的工具包。expat XML工具包用C語言解析XML,令PHP與XML輕松共舞。
PHP是一種專為Web設計的絕佳腳本語言。XML是表示Web內容的標準。兩者聯手真是要多美有多美!
下面我會給讀者演示一個簡單的示例,通過這個例子即可說明如何用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.
表A PHP解析XML的輸出結果
首先我創建了XML解析器的一個實例:
$parser = xml_parser_create();
接著,我定義解析器遭遇開始和結束標簽時的操作。注意“startElement”和“endElement”是用戶定義的函數,當然你可以按照自己的喜好給它們起個其他名字,但我起的這些名字可是標準的習慣要求。
xml_set_element_handler($parser, “startElement”, “endElement”);
然后我定義了數據操作。這里的“characterData”也是用戶定義的函數,名字也是習慣性的。
xml_set_character_data_handler($parser, “characterData”);
現在打開文件讀取數據。你可以在這里開始編寫錯誤處理代碼,我在例子中省略了這些錯誤處理。不要忘了在腳本的開頭定義$xml_file。
$filehandler = fopen($xml_file, “r”);
我開始讀取文件內容,一次讀4K字節并放在變量“$data”內直到文件末尾。我用xml_parse解析讀取的這些數據段。
while ($data = fread($filehandler, 4096)) {
xml_parse($parser, $data, feof($filehandler));
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成人特级毛片 | 亚洲天堂女人 | 手机在线完整视频免费观看 | 成人精品一区二区www | 亚洲xxx视频 | 成人国产在线不卡视频 | 成人欧美视频在线看免费 | 亚洲欧美色中文字幕 | 拔擦拔擦8x华人免费久久 | 视频免费在线观看 | 亚洲成人高清在线观看 | 精品国产看高清国产毛片 | www.91久久| 亚洲免费视频在线 | 在线视频精品播放 | 国产日韩精品欧美一区喷 | 国产免费播放一区二区三区 | 久久不卡精品 | 日本爱爱视频网站 | 在线成h人视频网站免费观看 | 那里有黄色网址 | 国产一区二区亚洲精品天堂 | 亚洲依依成人精品 | 一区二区三区四区 | 91欧美一区二区三区综合在线 | 波多野结衣免费免费视频一区 | 波多野结衣亚洲一区二区三区 | 亚洲色播永久网址大全 | 国产五月天在线 | 亚洲高清中文字幕一区二区三区 | 久久99精品国产99久久 | 性欧美videofree另类hd | 操操操网| 亚洲免费网 | a级片日韩 | 久久精品视| 夜夜未满十八勿进的爽爽影院 | 美女网站视频免费 | 精品推荐 国产 | 国产欧美第一页 | 久久精品a一国产成人免费网站 |