一、 XML簡介
XML(可擴充的標註語言)是一種W3C標準,主要用於Web應用程式和伺服器之間實現容易的互動、資料的儲存與使用。
使用XML標準編碼的資料具有能容易被人和電腦解釋的意義和結構。XML資料是平台和應用程式獨立的。不用多說,這本身就使XML成為適合於互連網的一個理想的資料交換格式(事實上,它正是因這一用途而被開發的)。最近,寬頻連線的增長及消費者對于越過任何媒體進行資料共用的應用軟體的需求意味著,XML Web服務和應用軟體正變得越來越豐富。
XML的發明正是為瞭解決描述網上豐富的資料的組織問題;而目前為止,這一問題僅能夠通過HTML的巧妙使用得到部分地解決。
下面是一XML文檔的執行個體:
<?xml version="1.0"?> <party> <location>My House</location> <time>7pm</time> <guest> <name>John Bloggs</name> <item>Crate of Fosters</item> </guest> <guest> <name>Sara Bloggs</name> <item>Umbrella</item> </guest> <guest> <name>David Fig</name> <item>Bombay Mix</item> </guest> </party> |
如果你以前沒見過XML,那麼你可以認為它看起來象HTML。HTML是一種SGML應用程式,而XML是它的一個子集。然而,其相似性還包括它們具有相似的標註分隔字元。
僅需看一下上面的XML片斷,我們就能看到,該資料是描述一個具有一些客人的聚會;其中,每一個客人相應於一項。用於描述資料的標籤名完全由作者來選擇。所有XML標準要求:資料必須是一致的並且用於描述資料的標籤為良構的。我們可以進一步用一種文件類型聲明(DTD)或一個XML模式來強制資料的完整性。然而為簡化起見,我們在本文中將僅使用普通的XML。
二、 XML應用程式
剛才,我們已經看到了如何使用XML來描述任何種類的資料。事實上,XML已經在今天的許多Web應用程式中得到廣泛使用,下面是一些著名的應用描述:
· XHTML-這是使用最廣泛的XML應用程式之一。它類似基於HTML的SGML-用於描述資料在網頁上的顯示方式。XHTML使用一DTD來確保所有的文檔遵循標準。XHTML的出現使Web程式員的開發稍微容易了一些;然而,一種完全相容於CSS和XHTML標準的web瀏覽器尚未出現。
· XML-RPC-遠端程序呼叫(RPC),應用於分布式應用程式中以調用遠端電腦上的過程。XML-RPC使用XML對關於程序呼叫的資訊進行編碼,並且使用HTTP把它發送到接收電腦。然後,過程的傳回值被再次用XML編碼並用HTTP串連發送回調用者電腦。
· RSS-真正簡單的彙總/豐富的網站摘要,它是一種用來彙總web網站內容(例如新聞、文章、共用價格和連結等)的方法,它用一個特殊的應用程式(一個彙總器)定期更新使用者PC上的RSS回饋。該RSS資料是使用XML進行編碼和傳輸的。
· AJAX-非同步JavaScript和XML,允許web開發人員建立具有豐富特徵的事件驅動的運行在web瀏覽器上的web應用程式。其中,JavaScript用於把XML編碼的資料發送到伺服器端指令碼(或從伺服器端接收XML編碼的資料),並允許局部的即時的頁面更新而不需要更新所有頁面內容。
上面僅僅是XML的可能的應用的一部分。在以後文章中,我們將分析如何在PHP中使用這些應用軟體。
三、 在PHP中使用XML
自從PHP 5.0以來,PHP能與XML互動的可用選項顯著地增加。而PHP版本4所能提供的是不穩定的而且是非w3c相容的DOM XML擴充。
下面,我將集中討論PHP 5所提供給我們的三個允許我們與XML互動的方法:DOM,簡單XML和XPath。在可能之處,我將建議最適合於每種方法的條件和資料。所有的範例程式碼將使用XML資料來源來描述一個庫及其中包含的書。
<xml version="1.0"?> <library> <categories> <category cid="1">Web Development</category> <category cid="2">Database Programming</category> <category cid="3">PHP</category> <category cid="4">Java</category> </categories> <books> <book> <title>Apache 2</title> <author>Peter Wainwright</author> <publisher>Wrox</publisher> <category>1</category> </book> <book> <title>Advanced PHP Programming</title> <author>George Schlossnagle</author> <publisher>Developer Library</publisher> <category>1</category> <category>3</category> </book> <book> <title>Visual FoxPro 6 - Programmers Guide</title> <author>Eric Stroo</author> <publisher>Microsoft Press</publisher> <category>2</category> </book> <book> <title>Mastering Java 2</title> <author>John Zukowski</author> <publisher>Sybex</publisher> <category>4</category> </book> </books> </library> |
四、 DOM
DOM PHP副檔名允許使用W3C DOM API在XML文檔上進行操作。在PHP 5出現之前,這是PHP能存取XML文檔的唯一方法。如果你在JavaScript中使用了DOM,那麼會認識到這些物件模型幾乎是一樣的。
由於DOM方法在遍曆和操作XML文檔時比較羅嗦,所以任何DOM相容的代碼都有明顯的優點-與任何其它實現相同的W3C相容的物件模型的API相容。
在下面的執行個體代碼中,我們使用DOM來顯示關於每本書的資訊。首先,我們遍曆一下列表目錄,把它們的Id和相應的名字裝載到一個索引數組中。然後,我們顯示每本書的一個簡短描述:
PHP:
<?php /*這裡我們必須指定XML版本:也即是1.0 */ $xml = new DomDocument(1.0); $xml->load(xml/library.xml); /*首先,建立一個目錄列表*/ $categories = array(); $XMLCategories = $xml->getElementsByTagName(categories)->item(0); foreach($XMLCategories->getElementsByTagName(category) as $categoryNode) { /*注意我們是如何得到屬性的*/ $cid = $categoryNode->getAttribute(cid); $categories[$cid] = $categoryNode->firstChild->nodeValue; } ?> <html> <head> <title>XML Library</title> </head> <body> <? php foreach($xml->getElementsBytagName(book) as $book): /*尋找標題*/ $title = $book->getElementsByTagName(title)->item(0)->firstChild->nodeValue; /*尋找作者-為了簡化起見,我們假設僅僅有一個作者*/ $author = $book->getElementsByTagName(author)->item(0)->firstChild->nodeValue; /* 列表目錄*/ $bookCategories = $book->getElementsByTagName(category); $catList = ; foreach($bookCategories as $category) { $catList .= $categories[$category->firstChild->nodeValue] . , ; } $catList = substr($catList, 0, -2); ?> <div> http://www.bkjia.com/PHPjc/508481.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/508481.htmlTechArticle一、 XML簡介 XML(可擴充的標註語言)是一種W3C標準,主要用於Web應用程式和伺服器之間實現容易的互動、資料的儲存與使用。 使用XML標準編... |