狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

PHP中的XML應(yīng)用(一)

PHP中的XML應(yīng)用(一)

更新時間:2024-04-08 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

綜述
XML代表Extensible Markup Language(eXtensible Markup Language的縮寫,意為可擴(kuò)展的標(biāo)記語言)。XML是一套定義語義標(biāo)記的規(guī)則,這些標(biāo)記將文檔分成許多部件并對這些部件加以標(biāo)識。它也是元標(biāo)記語言,即定義了用于定義其他與特定領(lǐng)域有關(guān)的、語義的、結(jié)構(gòu)化的標(biāo)記語言的句法語言。XML是當(dāng)今最熱門的技術(shù)。而PHP也具有分析XML文檔的功能,下面我們將共同探討一下PHP中的XML應(yīng)用的情況。

XML概貌
  談起XML(eXtended Markup Language:可擴(kuò)展標(biāo)記語言),我們不妨先看一段HTML的代碼:

<html>
<title>XML</title>
<body>
<p><center><font color="red">TEXT</font></center></p>
<a href="www.domain.com"><img src=http://cfan.net.cn/info/"logo.jpg"/></a>
</body>
</html>

  上面這段代碼從結(jié)構(gòu)上就符合XML的規(guī)則,XML可以理解是包含數(shù)據(jù)的樹形的結(jié)構(gòu)類型:

1、引用同一個元素的時候,使用一致的大小寫,如<center></Center>就是不符合規(guī)定的
2、任何屬性值(如 href="????")要用""引起來,如<a href=www.yahoo.com>就是不正確的
3、所有元素必須由打開<和關(guān)閉>標(biāo)注組成,元素應(yīng)該形如<body></body>或空元素<img ... />,如果結(jié)尾的 "/>" 少了"/"就是錯誤的代碼
4、所有元素必須彼此嵌套,就像寫程序的循環(huán)一樣,而且,所有的元素必須嵌套于根元素之中,比如上面的代碼所有的內(nèi)容都嵌套于<html></html>之中。
5、元素名稱(即上面的body a p img等)應(yīng)為字母開頭。

怎樣應(yīng)用PHP的XML解析器Expat?
Expat是PHP腳本語言的XML解析器(同樣稱為XML處理器),可以使程序訪問XML文檔的結(jié)構(gòu)和內(nèi)容。它是一種基于事件的解析器。XML解析器有兩種基本類型:

基于樹型的解析器:將XML文檔轉(zhuǎn)換成樹型結(jié)構(gòu)。這類解析器分析整篇文章,同時提供一個API來訪問所產(chǎn)生樹的每個元素。其通用的標(biāo)準(zhǔn)為DOM(文檔對象模式)。

基于事件的解析器:將XML文檔視為一系列的事件。當(dāng)一個特殊事件發(fā)生時,解析器將調(diào)用開發(fā)者提供的函數(shù)來處理。基于事件的解析器有一個XML文檔的數(shù)據(jù)集中視圖,也就是說它集中在XML文檔的數(shù)據(jù)部分,而不是其結(jié)構(gòu)。這些解析器從頭到尾處理文檔,并將類似于-元素的開始、元素的結(jié)尾、特征數(shù)據(jù)的開始等等-事件通過回調(diào)(callback)函數(shù)報告給應(yīng)用程序。

以下是一個"Hello-World"的XML文檔范例:

<greeting>
Hello World
</greeting>

  基于事件的解析器將報告為三個事件:

開始元素:greeting
CDATA項的開始,值為:Hello World
結(jié)束元素:greeting

  基于事件的解析器不產(chǎn)生描述文檔的結(jié)構(gòu),當(dāng)然如果使用Expat,必要時它一樣可以在PHP中生成完全的原生樹結(jié)構(gòu)。在CDATA項中,基于事件的解析器不會得到父元素greeting的信息。然而,它提供一個更底層的訪問,這就使得可以更好地利用資源和更快地訪問。通過這種方式,就沒有必要將整個文檔放入內(nèi)存;而事實上,整個文檔甚至可以大于實際內(nèi)存值。

  上面Hello-World的范例雖然包括完整的XML格式,但它是無效的,因為既沒有DTD(文檔類型定義)與其聯(lián)系,也沒有內(nèi)嵌DTD。但是Expat是一個不檢查有效性的解析器,因此忽略任何與文檔聯(lián)系的DTD。應(yīng)注意的是文檔仍然需要完整的格式,否則Expat(和其他符合XML標(biāo)準(zhǔn)的解析器一樣)將會隨著出錯信息而停止。

編譯Expat
  Expat可以編譯進(jìn)PHP3.0.6版本(或以上)中。從Apache1.3.22開始,Expat已經(jīng)作為Apache的一部分。在Unix系統(tǒng)中,可以通過-with-xml選項配置PHP將其編譯入PHP。

  如果將PHP編譯為Apache的模塊,而Expat將默認(rèn)作為Apache的一部分。在Windows中,則必須要加載XML動態(tài)連接庫。

  XML范例:XMLstats
  我們所要討論的范例是使用Expat來收集XML文檔的統(tǒng)計數(shù)據(jù)。

  對于文檔中每個元素,以下信息都將被輸出:

該元素在文檔中使用的次數(shù)
該元素中字符數(shù)據(jù)的數(shù)量
元素的父元素
元素的子元素

  注意:為了演示,我們利用PHP來產(chǎn)生一個結(jié)構(gòu)來保存元素的父元素和子元素.

用于產(chǎn)生XML解析器實例的函數(shù)有哪些?
  用于產(chǎn)生XML解析器實例的函數(shù)為xml_parser_create()。該實例將用于以后的所有函數(shù)。這個思路非常類似于PHP中MySQL函數(shù)的連接標(biāo)記。在解析文檔前,基于事件的解析器通常要求注冊回調(diào)函數(shù)-用于特定的事件發(fā)生時調(diào)用。Expat沒有例外事件,它定義了如下七個可能事件:

對象 XML解析函數(shù) 描述
元素 xml_set_element_handler() 元素的開始和結(jié)束
字符數(shù)據(jù) xml_set_character_data_handler() 字符數(shù)據(jù)的開始
外部實體 xml_set_external_entity_ref_handler() 外部實體出現(xiàn)
未解析外部實體 xml_set_unparsed_entity_decl_handler() 未解析的外部實體出現(xiàn)
處理指令 xml_set_processing_instruction_handler() 處理指令的出現(xiàn)
記法聲明 xml_set_notation_decl_handler() 記法聲明的出現(xiàn)
默認(rèn) xml_set_default_handler() 其它沒有指定處理函數(shù)的事件

所有的回調(diào)函數(shù)必須將解析器的實例作為其第一個參數(shù)(此外還有其它參數(shù))。

  對于本文最后的范例腳本,需要注意的是它既用到了元素處理函數(shù)又用到了字符數(shù)據(jù)處理函數(shù)。元素的回調(diào)處理函數(shù)通過xml_set_element_handler()來注冊。

這個函數(shù)需要三個參數(shù):

解析器的實例
處理開始元素的回調(diào)函數(shù)的名稱
處理結(jié)束元素的回調(diào)函數(shù)的名稱
  當(dāng)開始解析XML文檔時,回調(diào)函數(shù)必須存在。它們必須定義為與PHP手冊中所描述的原型一致。

  例如,Expat將三個參數(shù)傳遞給開始元素的處理函數(shù)。在腳本范例中,其定義如下:

function start_element($parser, $name, $attrs)

$parser是解析器標(biāo)志,$name是開始元素的名稱,$attrs為包含元素所有屬性和值的數(shù)組。

一旦開始解析XML文檔,Expat在遇到開始元素是都將調(diào)用start_element()函數(shù)并將參數(shù)傳遞過去。

  XML的Case Folding選項
  用xml_parser_set_option()函數(shù)將Case folding選項關(guān)閉。這個選項默認(rèn)是打開的,使得傳遞給處理函數(shù)的元素名自動轉(zhuǎn)換為大寫。但XML對大小寫是敏感的(所以大小寫對統(tǒng)計XML文檔是非常重要的)。對于我們的范例,case folding選項必須關(guān)閉。

<待續(xù)>

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
麻豆国产精品一区二区三区| 国产精品久99| 亚洲欧美网站| 亚洲国产片色| 高清不卡在线观看| 日韩av电影一区| 亚洲美女淫视频| 亚洲国产岛国毛片在线| 精品久久人人做人人爽| 欧美系列在线观看| 在线视频中文字幕一区二区| 国产精品mm| 亚洲欧美在线网| 秋霞电影一区二区| 日韩av一区二区在线影视| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美综合色免费| 亚洲女同同性videoxma| 色香蕉久久蜜桃| 欧美精品v日韩精品v韩国精品v| 欧美肥大bbwbbw高潮| 日韩精品一区二区三区视频在线观看 | 99久久精品国产麻豆演员表| 99久久国产综合精品女不卡| 欧美日韩理论| 国产一区二区三区奇米久涩 | 亚洲一区二区在线免费观看视频| 亚洲综合色丁香婷婷六月图片| 日韩和的一区二区| 极品少妇一区二区| 91视频一区二区三区| 一区二区三区我不卡| 色婷婷av一区二区| 日韩美女视频一区二区在线观看| 中文幕一区二区三区久久蜜桃| 又紧又大又爽精品一区二区| 精品在线一区二区三区| 91丝袜美女网| 久久综合中文| 欧美精品一区二区三区视频 | 国产老妇另类xxxxx| 黄色亚洲在线| 欧美三级电影在线观看| 国产日本欧美一区二区| 日本欧美一区二区三区乱码| av电影在线观看不卡| 国产精品久久国产三级国电话系列| 欧美日韩一区二区三区不卡| 国产精品理论片| 久久99久久精品| 亚洲经典自拍| 欧美一卡2卡3卡4卡| 国产精品综合一区二区三区| 92国产精品观看| 91成人看片片| 日本一区二区三区在线不卡| 美国精品在线观看| 亚洲午夜高清视频| 欧美一区二区三区成人| 一区二区三区视频在线看| 成人app在线| 在线观看国产一区二区| 国产精品嫩草影院com| 国内精品免费在线观看| 亚洲永久免费精品| 国产精品沙发午睡系列990531| 蜜臀av一区二区在线免费观看 | 在线观看欧美一区| 日韩欧美精品在线| 日韩福利视频网| 在线视频精品| 亚洲国产电影在线观看| 成人午夜私人影院| 91国偷自产一区二区三区观看| 国产精品久久久久久久蜜臀| 国产夫妻精品视频| 在线视频亚洲一区| 亚洲国产精品一区二区久久恐怖片| 91在线精品一区二区| 91精品国产全国免费观看| 五月婷婷综合在线| 亚洲精品男同| 一区免费观看视频| 欧美区高清在线| 久久久av毛片精品| 成人av在线播放网址| 欧美日韩国产一级片| 日韩高清不卡一区| 午夜综合激情| 亚洲伊人伊色伊影伊综合网| 激情一区二区三区| 国产欧美综合在线观看第十页| 成人免费视频免费观看| 91精品国产欧美一区二区成人| 精品一区二区在线看| 欧美影片第一页| 久久精品国产第一区二区三区 | 无码av中文一区二区三区桃花岛| 一本色道久久综合一区| 亚洲视频在线一区| 狠狠综合久久| 亚洲丝袜美腿综合| 国产一区二区高清视频| 亚洲一区二区三区中文字幕在线| 亚洲视频导航| 亚洲成人免费影院| 色婷婷综合五月| 日本91福利区| 在线观看视频一区二区欧美日韩| 美女视频第一区二区三区免费观看网站| 免费在线一区二区| 日本系列欧美系列| 欧美日韩不卡在线| 成人自拍视频在线观看| 久久久久久久免费视频了| 欧美日韩高清免费| 亚洲综合无码一区二区| 亚洲欧美日韩在线观看a三区| 日韩电影在线观看电影| 欧美精品久久久久久久久老牛影院| 国产激情精品久久久第一区二区 | 国产欧美一区二区色老头| 午夜精品久久久久久久99水蜜桃| 91久久精品一区二区三| 精品一区二区国语对白| 精品捆绑美女sm三区| 欧美日韩国产免费观看| 亚洲精品欧美激情| 中文字幕乱码久久午夜不卡| 亚洲网站视频| 日韩成人伦理电影在线观看| 欧美日本精品一区二区三区| av在线不卡电影| 亚洲视频免费观看| 欧美视频在线一区二区三区| 成人激情免费电影网址| 国产精品亲子伦对白| 久久国产精品一区二区三区| 国产乱码精品一区二区三| 国产午夜精品一区二区三区嫩草| 国产精品久久国产三级国电话系列| 日本怡春院一区二区| 欧美mv日韩mv国产网站| 亚洲欧洲一二三| 国内精品嫩模私拍在线| 国产精品久久久久久久久果冻传媒| 久久婷婷丁香| 99精品在线观看视频| 日日噜噜夜夜狠狠视频欧美人 | 久久伊人蜜桃av一区二区| 国产精品推荐精品| 成人午夜av电影| 亚洲一级不卡视频| 欧美成人r级一区二区三区| 99riav1国产精品视频| 国产激情精品久久久第一区二区| 日韩一区中文字幕| 911精品国产一区二区在线| 亚洲精选91| 成人永久aaa| 亚洲国产精品久久人人爱| 日韩精品一区二区三区在线播放| 亚洲女同在线| 欧美极品一区| 国产精品99久久久久久久女警| 亚洲另类春色校园小说| 欧美精品一区二区三区蜜桃| 在线观看日韩高清av| 99精品国产99久久久久久福利| 丰满少妇在线播放bd日韩电影| 亚洲18色成人| 亚洲色图都市小说| 精品国产伦理网| 欧美日韩高清影院| 亚洲欧美国产不卡| 亚洲私人影院| 成人小视频在线观看| 老司机精品视频在线| 亚洲一区在线观看免费| 亚洲国产精品成人综合| 欧美一二三区在线| 一本色道久久综合亚洲91| 亚洲激情一区| 极品中文字幕一区| 91看片淫黄大片一级| 成人在线综合网站| 国产成人一级电影| 精品综合久久久久久8888| 亚洲成人av免费| 一区二区三区毛片| 亚洲日本va午夜在线影院| 中文在线资源观看网站视频免费不卡| 欧美精品 国产精品| 欧美色视频一区| 欧美综合欧美视频| 欧美在线观看视频一区二区| 一本在线高清不卡dvd| 久久久国产精品一区二区三区| 亚洲尤物影院| 久久久福利视频|