欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
在PHP中運行XPath查詢(xún)
--------------------------------------------------------------
此文章打印自Builder.com.cn。
--------------------------------------------------------------
在PHP中運行XPath查詢(xún)
Builder.com
30/3/2005
URL:http://www.zdnet.com.cn/developer/webdevelop/story/0,3800067013,39360703,00.htm
XPath是一種可以對XML文檔中的某一部分進(jìn)行單獨處理的一種語(yǔ)言,對于XSLT轉換而言它尤其重要。XPath也可作為單獨的工具管理應用程序中的XML數據,比如網(wǎng)絡(luò )應用程序。
微軟通過(guò)selectSingleNode() 和selectNodes()方法來(lái)提供的XPath功能,從而實(shí)現對DOM()節點(diǎn)和文檔的操作。然而,PHP是通過(guò)程序中的環(huán)境(context)來(lái)實(shí)現XPath功能的。我將舉例來(lái)說(shuō)明如何利用PHP代碼從XML文檔中抽取不同的數據片斷,并隨后解釋這些PHP代碼是如何工作的。
在這個(gè)例子中,我使用了以下的XML數據。(注意:這些代碼是在PHP 4.3.4、Windows XP和IIS 5.1條件下開(kāi)發(fā)并運行成功的。)
<?xml version="1.0"?>
<x:rootxmlns:x="http://www.someplace.com">
<x:row>
<x:dog
color="yellow">Marmaduke</x:dog>
<x:cat>Garfield</x:cat>
</x:row>
<x:row>
<x:dog color="white">Snoopy</x:dog>
<x:cat>Heathcliff</x:cat>
</x:row>
<x:row>
<x:dog color="gray">Spike</x:dog>
<x:cat>Sylvester</x:cat>
</x:row>
</x:root>
這個(gè)XML文檔包含了一些元素(element)和屬性(attribute),還有一個(gè)名域空間(namespace)的聲明,都是一些基本的XML。在示例的PHP代碼中,我們會(huì )從這個(gè)XML文檔中得到多種的查詢(xún)結果。
<?php
$sxml = ‘<?xml version="1.0"?>
<x:rootxmlns:x="http://www.someplace.com">
<x:row>
<x:dog color="yellow">Marmaduke</x:dog>
<x:cat>Garfield</x:cat>
</x:row>
<x:row>
<x:dog color="white">Snoopy</x:dog>
<x:cat>Heathcliff</x:cat>
</x:row>
<x:row>
<x:dog color="gray">Spike</x:dog>
<x:cat>Sylvester</x:cat>
</x:row>
</x:root>‘;
$xml = domxml_open_mem($sxml);
$xpc = XPath_new_context($xml);
XPath_register_ns($xpc, "x", "http://www.someplace.com");
$nodes = XPath_eval($xpc, "http://x:row/x:dog[@color=‘yellow‘]/text()");
foreach ($nodes->nodeset as $node) {
print $node->content . "\n";
}
$nodes = XPath_eval($xpc, "http://x:row/x:dog");
foreach ($nodes->nodeset as $node) {
print $xml->dump_node($node) . "\n";
}
$nodes = XPath_eval($xpc, "http://x:cat/child::text()|//x:dog[@color=‘white‘ or
@color=‘gray‘]/text()");
foreach ($nodes->nodeset as $node) {
print $node->content . "\n";
}
$xml->free();
?>
首先,創(chuàng )建一個(gè)局部變量來(lái)存儲XML字符串,這一信息原本可以被傳遞并成為HTTP POST請求的一部分,然而,我要把它包含在代碼中;下一步是要使用domxml_open_mem()來(lái)創(chuàng )建一個(gè)DOM文檔,domxml_open_mem()可以從有效的XML字符串中在內存中創(chuàng )建一個(gè)DOM文檔對象,它只有一個(gè)參數:XML字符串;另一種方法是將XML存儲于一個(gè)單獨的文件中,然后使用domxml_open_file()從文件中讀取XML,它也只有一個(gè)參數:XML文件的文件名。
創(chuàng )建了DOM文檔對象之后,就可以通過(guò)XPath_new_context()來(lái)創(chuàng )建這一對象的XPath環(huán)境了,它只需一個(gè)參數:當前的DOM文檔對象。這一環(huán)境用于XPath表達式的運算,如果需要的話(huà)還可以用于注冊名域空間。既然在XML中已經(jīng)包括了一個(gè)名域空間,則使用XPath_register_ns()來(lái)注冊名域空間,這樣才能在XPath查詢(xún)中使用前綴,XPath_register_ns()包括了三個(gè)參數:他們分別是XPath環(huán)境、前綴和名域空間。
現在可以運行XPath查詢(xún)了,可以通過(guò)XPath_eval()來(lái)實(shí)現,它的第一參數是XPath的環(huán)境,第二參數是XPath表達式,XPath_eval()將返回一個(gè)DOM節點(diǎn)的數組,在我的代碼中,我對節點(diǎn)集合進(jìn)行單步調試,可以得到某些形式的輸出。
在第一個(gè)XPath例子中,我抓取了所有‘color’屬性等于‘yellow’,并且在x:row節點(diǎn)下的x:dog文本元素,在PHP中的XPath表達式和MSXML中的XPath有些細微的區別,我將‘/text()’部分包含在表達式中則只返回文本節點(diǎn),而在MSXML中,你需要使用‘text’屬性來(lái)訪(fǎng)問(wèn)文本節點(diǎn),對返回的文本節點(diǎn)使用‘content’屬性則可以取得文本節點(diǎn)的內容。
在第二個(gè)例子中,我抓取了在x:row節點(diǎn)下的x:dog元素,然而,這次我對DOM文檔對象使用dump_node()方法來(lái)打印出具有適當節點(diǎn)的整個(gè)XML,dump_node()接受一個(gè)參數:需要轉儲內容的DOM節點(diǎn)。
在最后一個(gè)例子中,我抓取了所有‘color’屬性等于’gray’的所有x:cat文本節點(diǎn)和x:dog文本節點(diǎn),我再次對節點(diǎn)集合進(jìn)行單步調試并打印出每個(gè)節點(diǎn)的內容,最后釋放這個(gè)DOM文檔對象。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
XPath常用定位節點(diǎn)元素語(yǔ)句總結 - 中國龍 - 博客園
在C#中使用XPath示例
C#讀取XML DOM方式讀取
XPath語(yǔ)法 在C#中使用XPath示例
Java解析XML匯總(DOM/SAX/JDOM/DOM4j/XPath)
XPath學(xué)習
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久