PHP教程(lijiazhong)第11章.ppt_第1頁
PHP教程(lijiazhong)第11章.ppt_第2頁
PHP教程(lijiazhong)第11章.ppt_第3頁
PHP教程(lijiazhong)第11章.ppt_第4頁
PHP教程(lijiazhong)第11章.ppt_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2,第11章 XML文件操作,早期的PHP版本就已經開始支持XML了,到了PHP4增加了DOMXML擴展模塊,XML得到了更好的支持,但在PHP4中我們面對的幾乎都是非標準的應用以及API中斷等其他不完全的功能,PHP5則完全重寫了與XML有關的代碼,使之完全遵循XML的使用標準,加強了對XML的支持。 對XML的操作,最常見的就是解析XML文件和修改、存儲其中的數(shù)據(jù)。目前在網站信息傳遞中常用的RSS就是典型的XML應用。 本章我們將學習XML文檔格式,學習XML和HTML的區(qū)別,對XML文檔解析,并簡單地改寫、刪除其中的元素。最后,通過一個以XML文檔充當數(shù)據(jù)庫存儲留言的例程來結束本章的學習

2、。,3,11.1 XML簡介,11.1.1 什么是XML XML,Extensible Markup Language(可擴展標記語言),是一種可以創(chuàng)建自定義標記符號(Tags)的標記語言,是用于表示結構化信息的一種標準文本格式,它由W3C(萬維網協(xié)會)創(chuàng)建,用來克服HTML的局限。 和HTML一樣,XML基于標準通用標記語言(Standard Generalized Markup Language,SGML),SGML是一種在Web發(fā)明之前就早已存在的用標記來描述文檔資料的通用語言,它十分龐大且難于學習和使用。 XML與SGML一樣,是一個用來定義其他語言的元語言,與SGML相比,XML規(guī)范

3、不到SGML規(guī)范的1/10,簡單易懂,是一門既無標簽集也無語法的新一代標記語言。 下面來看一段XML文本代碼: 參見教材P215,4,11.1.2 XML的特點,可擴展性 靈活性 自描述性 除了上述先進特性以外,XML還具有簡明性。,5,11.1.3 XML和HTML的區(qū)別及語法要求,在XML文檔中,上述幾種語句的語法都是錯誤的。因為: 所有的標記都必須要有一個相應的結束標記。 所有的XML標記都必須合理嵌套。 所有XML標記都區(qū)分大小寫。 所有標記的屬性必須用“”括起來。 所以上例語句在XML中正確的寫法是: Hello,world. Hello,world. Hello,world. He

4、llo,world.,6,11.1.3 XML和HTML的區(qū)別及語法要求,另外,XML標記必須遵循下面的命名規(guī)則: 名字中可以包含字母、數(shù)字以及其他字母。 名字不能以數(shù)字或“_“(下劃線)開頭。 名字不能以字母 xml(或XML或Xml .)開頭。 名字中不能包含空格。 名字中也不能使用“.”,“.”被用來連接元素和屬性。,7,11.2 簡單的XML操作,PHP4使用DOMXML擴展模塊提供對XML文檔的操作,PHP5保留了DOMXML擴展并引入了一種用于讀寫XML的新的應用程序編程接口(API):SimpleXML。 SimpleXML能夠很好地處理簡單的、類似記錄的數(shù)據(jù),要比使用DOM簡單

5、得多,是PHP中一種可靠、健壯的XML處理方法,它使PHP頁面能夠以PHP友好的語法來查詢、搜索、修改和重新發(fā)布XML。,8,11.2 簡單的XML操作,如我們即將使用的這個網上商店的RSS例子,它包含了商店發(fā)布的5件最新商品: 參見教材P218 程序運行結果應當如圖11-1所示。,9,11.2.1 創(chuàng)建一個SimpleXML對象,SimpleXML提供了一種簡單、直觀的方法來處理XML。它只有一個單一類型的類,3個函數(shù)和6個方法。 創(chuàng)建一個SimpleXML對象有三種方法: (1)使用new關鍵字創(chuàng)建 (2)使用simplexml_load_string()創(chuàng)建 (3)最常用的方法,使用si

6、mplexml_load_file()從一個URL創(chuàng)建,10,11.2.2 讀取SimpleXML對象中的XML數(shù)據(jù),SimpleXMLElement對象的屬性是動態(tài)的,因為這些屬性是由對象實例決定的,而不是由類本身決定的。 例如: channel-item as $item) echo $item-title . ; echo $item-link . ; ?,11,11.2.2 讀取SimpleXML對象中的XML數(shù)據(jù),使用這么短短幾行代碼,就可以把rss文檔中的相關數(shù)據(jù)讀取出來了,相當簡單。在此基礎上,還可以根據(jù)CSS格式定義,來實現(xiàn)完整的HTML頁面顯示,運行結果如圖11-2所示。,1

7、2,11.2.3 XML數(shù)據(jù)的修改,強烈建議使用索引來編輯元素,除非你對文檔的結果非常確定。使用索引來編輯title元素會比較安全,如$rss-channel-item2-title = “長袖T恤新品T8208”;這行代碼用索引2指定要編輯第3個item的title: channel-item2-title = 長袖T恤新品T8208; foreach ($rss-channel-item as $item) echo $item-title . ; echo $item-link . ; ? 這樣,我們通過指定索引,更改了第3個元素的標題值。結果如圖11-3所示。,13,11.2.3 XM

8、L數(shù)據(jù)的修改,可以用PHP內置函數(shù)unset()來將一個元素從樹中移除。 unset()的參數(shù)必須是一個SimpleXMLElement,用屬性方法來訪問要移除的元素。例如,從channel節(jié)點移除一個item元素: channel-item2); foreach ($rss-channel-item as $item) echo $item-title . ; echo $item-link . ; ? 第3個item元素將被刪除,原先共5件商品信息,現(xiàn)在只剩下4件,執(zhí)行結果如圖11-4所示。,14,11.2.4 XML數(shù)據(jù)的存儲,下面這個例子綜合前兩個例程,刪除一個item元素,修改一個i

9、tem元素,之后存儲為新的XML文件: channel-item2-title = 長袖T恤新品T8208; unset($rss-channel-item3); $dom_rss = dom_import_simplexml($rss); $dom = new DOMDocument(1.0); $dom_rss = $dom-importNode($dom_rss, true); $dom_rss = $dom-appendChild($dom_rss); $rss_new = $dom-saveXML(); $dom-save(rss_new.xml); ? 程序執(zhí)行結果如圖11-5所示

10、。,15,11.3 XML文檔的動態(tài)創(chuàng)建,首先我們需要輸出header信息,以便讓瀏覽器得知要解析的是XML文件,然后,生成一個DOMXML對象,在這個對象中生成元素,在元素中生成節(jié)點之后,就構造出了完整的XML文檔,最后通過saveXML()方法輸出即可。例如: 參見教材P224 此程序執(zhí)行的結果如圖11-6所示。,16,11.4 XML應用示例:留言本,下面,我們要綜合XML的讀寫知識,編寫一個小型的留言本程序,就用XML文檔充當數(shù)據(jù)庫。,17,11.4.1 XML文件結構設計,首先設計用來存儲留言信息的XML文件,該文件相當于一個小型數(shù)據(jù)庫。 作為XML文檔,需要一個且唯一一個頂層元素,

11、我們將其命名為“guestbook”,在其下用于存儲每條留言信息的元素命名為“item”,每條留言設置幾個元素有:id、user(用戶名)、title(留言標題)、content(留言內容)、time(留言時間)、IP(留言者IP地址)。,18,11.4.2 提交頁面的編寫,form只設計3個表單項:用戶名、留言標題和留言內容,該頁面如圖11-7所示。 如圖11-8所示是由兩條留言生成的XML文件內容。 完成這兩部分功能的程序代碼如下: 參見教材P227,19,11.4.3 顯示頁面的編寫,讀取存儲留言的XML文件,并逐條顯示出來,就和本章開頭介紹的RSS聚合解析成HTML文件顯示出來一樣,用SimpleXML對象循環(huán)讀出每個item的內容,運行結果如圖11-9所示。 該頁面的詳細代碼如下: 參見教材P230,20,11.5 本 章 小 結,XML是用來存放數(shù)據(jù)的,它不是HTML的替代品。XML和HTML是兩種不同用途的語言。XML重點關注:什么是數(shù)據(jù)、如何存放數(shù)據(jù)、數(shù)據(jù)和顯示分離。 HTML是被設計用來顯示數(shù)據(jù)的,重點關注:如何更好地顯示數(shù)據(jù)。 HTML

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論