|
php5的XML新特性
作者 Christian Stocker 翻譯 ice_berg16(尋夢的稻草人)
面向的讀者
這篇文章的面向?qū)ο笫撬袑?a href=/itjie/phpjishu/ target=_blank class=infotextkey>php5的XML新功能感興趣的各個水平的php開發(fā)者。我們假定讀者掌握XML的基本知識。然而,如果你已經(jīng)在你的php當中使用了XML,那么這篇文章也會讓你受益非淺。
介紹
在當今的互聯(lián)網(wǎng)世界,XML已經(jīng)不再是一個時髦詞了,它已經(jīng)被廣泛的接受和規(guī)范的使用了。因此相對于php4,php5對于XML的支持更受到了重視。在php4中你面對的幾乎都是非標準,API中斷,內(nèi)存泄漏以及其它不完全的功能。盡管有些不足已經(jīng)在php4.3中得到改進,開發(fā)者們還是決定拋棄原有的代碼,在php5重寫全部代碼。
這篇文章將對php5中關(guān)于XML的所有令人激動的新特性逐一介紹。
php4 的 XML
早期的php版本就已經(jīng)開始支持XML了,而這只是一個基于SAX的接口,它可以輕松的解析任何XML文檔。隨著php4中加入了DOMXML擴展模塊,XML被更好的支持了。后來XSLT做為補充被加了進來。在整個php4的階段,其它一些功能如HTML,XSLT和DTD驗證也被加到了DOMXML擴展中,不幸的是,由于XSLT和DOMXML擴展始終處于實驗階段,API部分也被不止一次的修改,它們還是不能以默認方式安裝。此外,DOMXML擴展沒有遵循W3C制定的DOM標準,而有自己的命名方法。雖然在php4.3中這部分得到了改善并且許多內(nèi)存泄漏和其它一些功能也得以修復,但它始終沒有發(fā)展到一個穩(wěn)定的階段,一些深入的問題已經(jīng)幾乎不可能修復。只有SAX擴展被已默認方式安裝,其它的一些擴展從未得到廣泛的使用。
基于所有這些原因,php的XML開發(fā)者決定在php5重寫全部代碼,并遵循使用標準。
php5的XML
在php5中所有支持XML的部分幾乎全部重新編寫.現(xiàn)在的所有XML擴展都是基于GNOME項目的LIBXML2庫。這將允許在不同的擴展模塊之間互相操作,核心開發(fā)者只需要在一個底層的庫上進行開發(fā)。例如,復雜的內(nèi)存管理只實現(xiàn)一次就可以讓所有XML相關(guān)擴展得到改善。
除了繼承php4中聞名的SAX解析器之外,php5還支持遵循W3C標準的DOM和基于LIBXSLT引擎的XSLT。同時還加入了php獨有的SimpleXML擴展和符合標準的SOAP擴展。隨著XML越來越被重視,php開發(fā)者決定在默認安裝方式中加入更多對XML的支持。這就意味著你現(xiàn)在可以使用SAX,DOM和SimpleXML,而這些擴展將會在更多的服務器上安裝。然后對于XSLT和SOAP的支持,還需要在php編譯時被顯式的配置。
數(shù)據(jù)流的支持
現(xiàn)在所有的XML擴展都支持php數(shù)據(jù)流,即使你不從php中直接訪問。例如,在php5中你可以從一個文件或從一條指令訪問數(shù)據(jù)流。基本上你能夠在任何可以訪問普通文件的地方訪問php數(shù)據(jù)流。
php4.3中簡要的介紹了數(shù)據(jù)流,在php5中已經(jīng)得到了進一步的提高,包含文件存取,網(wǎng)絡存取和其它操作,如共享一套功能函數(shù)。你甚至可以使用php代碼來實現(xiàn)你自己的數(shù)據(jù)流,這樣數(shù)據(jù)存取將變得非常簡單。關(guān)于這部分的更多細節(jié)請參考php文檔。
SAX
SAX的全稱是Simple API for XML,它是用于解析XML文檔的接口,是基于回調(diào)形式的。從php3開始就已經(jīng)支持了SAX,到現(xiàn)在也沒有太大的變化。在php5中,API接口并沒有改變,所以你的代碼仍然可以運行。唯一不同的是它不再基于EXPAT庫,而是基于LIBXML2庫。
這個變化帶來了一些對命名空間支持上的問題,這個問題在LIBXML2.2.6版本中已經(jīng)得到解決。但是LIBXML2以前的版本中并沒有解決,因此如果你使用了xml_parse_create_ns();強烈建議在你的系統(tǒng)上安裝LIBXML2.2.6。
DOM
DOM (文檔對象模型)是由W3C制定的一套訪問XML文檔樹的標準。在php4可以使用DOMXML來對此進行操作,DOMXML的最主要問題是它不符合標準的命名方法。而且在很長一段時間內(nèi)還存在內(nèi)存泄漏問題(php4.3已經(jīng)修復了這個問題)。
新的DOM擴展是基于W3C標準完成的,包含方法和屬性名稱。如果你在其它語言中熟悉DOM,例如在Javascript中,那么在php中編寫類似的功能將變得非常容易。你不必每次都查看文檔,因為方法和參數(shù)都是相同的。
由于使用了新的W3C標準,基于DOMXML的代碼將不能運行。在php中的API有很大的不同。但是如果你的代碼中使用了類似W3C標準的方法命名方式,移植并不是很困難。你只需要將載入函數(shù)和保存函數(shù)修改,刪除函數(shù)名中的下劃線(DOM標準使用首字母大寫)。其它各處的調(diào)節(jié)當然也是必須的,但是主要邏輯部分可以保持不變。
讀取DOM
我不會在這篇文章中解釋DOM擴展的所有特性,那也是沒有必要的。或許你應該將HTTP://www.w3.org/DOM的文檔加入書簽...糠只 主站蜘蛛池模板: 成人毛片18岁女人毛片免费看 | 欧美亚洲视频在线二区 | 日本精品久久无码影院 | 久久久久综合一本久道 | 暖暖 视频 在线 观看 高清 | 日本特黄的免费大片视频 | 理论片午午伦夜理片久久 | 午夜DJ国产精华日本无码 | 亚洲精品影院久久久久久 | 免费看 a一级毛片 免费久久狼人香蕉网 | xx顶级欧美熟妞xxhd | 久草视频在线观看免费4 | 国产乱人精品视频AV麻豆 | 阿离被扒开双腿疯狂输出 | 国产精品爆乳尤物99精品 | 寂寞夜晚视频在线观看 | 久cao在线香蕉| 欧美丰满熟妇无码XOXOXO | qvod 电影 | 亚洲欧洲日本无在线码播放 | 自拍区偷拍亚洲视频 | 亚洲精品免费在线 | 亚洲 欧美 国产 综合五月天 | 久久99re7在线视频精品 | 欧美白人战黑吊 | 高h乱np甄宓 | 亚洲精品国偷拍自产在线观看蜜臀 | 天天躁日日躁狠狠躁午夜剧场 | 在线观看亚洲专区5555 | 古月娜下面好紧好爽 | 韩国无遮羞禁动漫在线观看96 | 亚洲欧洲免费三级网站 | 牛牛在线1视频 | 九热这里只有精品 | 黄色888 | 内射爽无广熟女亚洲 | 绝对诱惑在线试听 | 人善交XUANWEN200喷水 | 3D内射动漫同人资源在线观看 | 牛牛免费视频 | 综合久久伊人 |