2010-08-03 89 views
2
<key><name>testing name</name><result>success</result></key> 

我的PHP代碼的簡單XML:閱讀使用PHP

$doc = new DOMDocument(); 
$doc->load('key.xml'); 
$result = $doc->getElementsByTagName("result"); 
echo $result->item(0)->nodeValue; 

我只需要提取「結果」的文本價值,但它不會輸出到我。請問你能幫幫我嗎?

+1

適合我。確保文件實際上可以通過'DOMDocument'加載。 – Gordon 2010-08-03 16:13:12

+0

是的你是對的。但我從PHP輸出的結果加載XML文件。 $ url =「http://site.com/?action=getkey」; $ data = file_get_contents($ url); $ doc-> load($ data); – devdarsh 2010-08-03 16:31:35

+0

輸出xml與我上面寫的相同。 – devdarsh 2010-08-03 16:32:45

回答

1

我想你在這裏使用一個常規變量作爲對象。而不是

echo $ result-> item(0) - > nodeValue;

爲什麼不使用

回聲$ doc->項(0) - >的nodeValue;

因爲$ doc是實例化的對象嗎?

+1

請熟悉[DOM API](http://ua2.php.net/manual/en/book.dom.php)。 'getElementsByTagName'返回一個'DOMNodeList'對象,與DOMDocument對比,它有一個'item()'方法。你的回答完全錯誤。 – Gordon 2010-08-03 17:27:54

+0

哦,但歡迎來到StackOverflow :) – Gordon 2010-08-03 17:59:35

4

根據您的意見,這可不行:

$url = "http://site.com/?action=getkey"; 
$data = file_get_contents($url); 
$doc->load($data); 

您獲取從遠程URI的內容和飼料它的功能加載文件。 DOMDocument::load從文件加載,而DOMDocument::loadXML()從字符串加載。

要麼

$doc->load('http://site.com/?action=getkey'); 

$doc->loadXml(file_get_contents('http://site.com/?action=getkey')); 

在一個旁註:

你似乎有error_reporting已禁用。如果您嘗試使用DOMDocument::load加載XML字符串,則應該收到PHP警告。也試圖做$result->item(0)應該導致一個PHP通知。您應該在開發機器上始終設置error_reporting(-1)以接收所有錯誤,通知和警告。還要確保你的PHP.ini的display_errors and display_startup_errors設置爲true。您只希望在生產機器上禁用這些功能。