2009-12-18 41 views
1

我一直在嘗試編寫一個PHP腳本來解析使用DOMXPath的XML文檔;但似乎我錯過了一些東西,因爲我的XPath查詢都沒有返回任何東西。所以我嘗試瞭解我的腳本來嘗試解析一個非常基本的XML文檔,但這也不起作用。我已將此腳本從this XPath example中刪除。爲什麼DOMXPath不工作?

<?php 

$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>'; 
$xml .= '<bookstore>'; 
$xml .= '<book category="COOKING">'; 
$xml .= '<title lang="en">Everyday Italian</title>'; 
$xml .= '<author>Giada De Laurentiis</author>'; 
$xml .= '<year>2005</year>'; 
$xml .= '<price>30.00</price>'; 
$xml .= '</book>'; 
$xml .= '</bookstore>'; 

$dom = new DOMDocument('1.0'); 
$dom->loadXML($xml); 

$xpath = new DOMXPath($dom); 
$result = $xpath->query('/bookstore/book[1]/title'); 
var_dump($result); 

?> 

問題是,我的$的var_dump導致總是返回類似:

object(DOMNodeList)#4 (0) { } 

...這表明它什麼也沒有發現。

回答

5

在這種情況下,var_dump()的輸出具有誤導性。 嘗試

foreach($result as $e) { 
    echo $e->nodeValue; 
} 

echo $result->length; 

代替。

例如使用你的代碼(直到$結果= $ XPath的....)+

echo phpversion(), "\n"; 
var_dump($result); 
echo $result->length, "\n"; 
foreach($result as $e) { 
    echo $e->nodeValue; 
} 

輸出

5.3.1 
object(DOMNodeList)#4 (0) { 
} 
1 
Everyday Italian 
+0

哎呦。我的錯誤是假設var_dump會告訴我一些東西。謝謝! – SoaperGEM 2009-12-18 18:36:38

0

我已經與指定的xmlns =「HTTP一個DOC掙扎:// www.w3.org/2005/Atom「放入根節點。拿出來,和xpath的作品。