2011-07-15 33 views
0

我知道這個討論已經被覆蓋了,我已經嘗試了這裏的每一個建議,但我似乎無法從PHP簡單地讀出一個XML文件。我只是試圖通過id來讀取標籤的內容。這裏的XML:簡單的xml更新與PHP

的test.xml

<?xml version="1.0" encoding="UTF-8"?> 
<queries> 
    <sql id="one">here is the first one</sql> 
    <sql id="two">here is the second one</sql> 
</queries> 

而我只是想用這種閱讀:

<?php 
$dom = new DOMDocument; 
$dom->validateOnParse = TRUE; 
$dom->loadXML('test.xml'); 
$node = $dom->getElementById('one'); 
echo $node->nodeValue; 
?> 

爲什麼在世界上我不能得到這個工作?對不起新問題,但我是全新的PHP。

回答

0

您需要使用DOMElement::setIDAttribute來設置ID屬性,或者使用定義屬性爲類型ID(您的示例不包括)的DTD。

最終代碼:

<?php 
$dom = new DOMDocument; 
$dom->validateOnParse = TRUE; 
$dom->loadXML('test.xml'); 
$dom->setIdAttribute("id",true); 
$node = $dom->getElementById('one'); 
echo $node->nodeValue; 
?> 
+0

謝謝,但我得到了這個500服務器錯誤。我正在使用Zend服務器。也許我有一些配置錯誤。我會環顧四周。 – Adam

0

getElementById(),因爲它在JavaScript並不起作用一樣在PHP和documentation會解釋。如果你不想在代碼中設置你的ID的麻煩,另一種「按ID查找」的方法是使用XPath:

<?php 
$dom = new DOMDocument; 
$dom->validateOnParse = TRUE; 
$dom->loadXML('test.xml'); 

$dxp = new DOMXPath($dom); 
$result = $dxp->query('//sql[@id = "one"]'); 
$node = $result->item(0); 
echo $node->nodeValue; 
?>