2012-04-19 82 views
2

我開發的應用程序是我需要改變的是這個樣子(words.xml)的XML文檔:使用PHP5和DOMXML和DOM PHP5

<?xml version='1.0' encoding='ISO-8859-1'?> 
<!DOCTYPE words SYSTEM "words.dtd"> 
<words> 
<word id="word_1">Alfa</word> 
<word id="word_2">Beta</word> 
<word id="word_3">Gamma</word> 
<word id="word_4">Delta</word> 
<word id="word_5">Zeta</word> 
</words> 

。我想的結果是(在這種情況下):

word_1 = Alfa 
word_2 = Beta 
word_3 = Gamma 
word_4 = Delta 
word_5 = Zeta 

我的PHP代碼:

<?php 

$xmlHitzakDok = new DOMDocument(); 
$xmlHitzakDok->load("words.xml"); 

$x = $xmlHitzakDok->documentElement; 
foreach ($x->childNodes AS $item) 
    { 
    print $item->nodeName . " = " . $item->nodeValue . "<br />"; 
    } 
?> 

我得到任何結果。問題是哪個?

+2

難道這不是沿着「node-> attribute('id')」=? – ethrbunny 2012-04-19 16:15:47

+0

錯誤報告和顯示錯誤設置是否正確?沒有發現錯誤? – Hajo 2012-04-19 16:20:14

回答

3

問題不在於$xmlHitzakDok->documentElement不是<words>元素,它是文檔本身,它不包含任何數據。

我建議使用xpath來獲取你想要的元素。

$xPath = new DOMXPath($xmlHitzakDok); 

foreach ($xPath->query('//words/word') AS $item) 
{ 
    echo $item->getAttribute('id') . " = " . $item->nodeValue . "<br/>"; 
} 
+0

我改變了我的代碼,但什麼也沒有。任何想法@火箭? – Haritz 2012-04-19 16:31:33

+0

適合我(http://codepad.org/oi3XP7cm)。你確定'words.xml'存在嗎?嘗試使用'$ xmlHitzakDok-> load(realpath(「words.xml」));'。 – 2012-04-19 16:57:14

+0

或嘗試做'if($ xmlHitzakDok-> load(「words.xml」)=== FALSE){die('error loading file');}'我的猜測是文件未被正確加載。 – 2012-04-19 17:01:08