2011-08-15 111 views
3

我想讀從最終的XML文件開始想我的XML這樣開始:讀取結束XML文件中的PHP

<note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note> 
<note> 
<to>Samy</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't Miss me this weekend!</body> 
</note> 

我需要閱讀最後一個音符首先我使用的代碼一樣,

$x = $xmldoc->getElementsByTagName('note'); 
     $nofnews = $xmldoc->getElementsByTagName('note')->length; 
     for ($i = 0; $i < $nofnews; $i++) { 
      $item_title = $x->item($i)->getElementsByTagName('to') 
          ->item(0)->nodeValue; 
      $item_link = $x->item($i)->getElementsByTagName('from') 
          ->item(0)->nodeValue; 
          } 

預先感謝您

+1

你只需要先讀最後一個音符的節點,或第一的最後一個音符節點,然後返回到第一? – hakre

回答

1

getElementsByTagName返回DOMNodeList。您可以訪問每個元素通過它的數字索引(0至長-1)你已經做的,但在剛開始的結束,而不是開始你的for循環,再算上向下:

$x = $xmldoc->getElementsByTagName('note'); 
$nofnews = $x->length; 
for ($i = $nofnews-1; $i > -1; $i--) 
{ 
    $item = $x->item($i); 
    $item_title = $item->getElementsByTagName('to') 
         ->item(0)->nodeValue; 
    $item_link = $item->getElementsByTagName('from') 
         ->item(0)->nodeValue; 
} 

這應該已經爲了你。

0

我不知道我理解正確,你的問題,但它似乎要開始按相反的順序讀取 XML文檔的根元素的孩子嗎?

(另外你給的例子內容就是從這裏取:http://www.w3schools.com/PHP/php_xml_simplexml.asp)爲什麼不按照他們的例子嗎?

但無論如何,這應該做的伎倆:

<?php 
$xml = simplexml_load_file("test.xml"); 

echo $xml->getName() . "<br />"; 

foreach(array_reverse($xml->children()) as $child) 
    { 
    // process your child element in here 
    } 
?> 

- >利用array_reverse()函數:http://www.w3schools.com/php/func_array_reverse.asp