2012-06-20 55 views
0

我想寫一個腳本,將更新RSS XML文件。我希望它採用現有文件並將新項目添加到項目列表的頂部。我之前已經將它添加到文件末尾,但現在它根本不添加新項目。我一直在網上查看,但我仍然無法實現。這是我到目前爲止:無法insertBefore在XML文件

$rssDoc = new DOMDocument(); 
$rss_file = $_SERVER['DOCUMENT_ROOT'].'/test_site/feed.xml'; 
$rssDoc->load($rss_file); 
$items = $rssDoc->getElementsByTagName('item'); 

$newItem = $rssDoc->createElement('item'); 
$rssTitle = $rssDoc->createElement('title'); 
$rssTitle->appendChild($rssDoc->createTextNode($title)); 
$newItem->appendChild($rssTitle); 

$rssDesc = $rssDoc->createElement('description'); 
$rssDesc->appendChild($rssDoc->createTextNode($string)); 
$newItem->appendChild($rssDesc); 

$rssLink = $rssDoc->createElement('link'); 
$rssLink->appendChild($rssDoc->createTextNode($link)); 
$newItem->appendChild($rssLink); 

$rssDate = $rssDoc->createElement('pubDate'); 
$rssDate->appendChild($rssDoc->createTextNode($pubDate)); 
$newItem->appendChild($rssDate); 

$firstItem = $items->item(0); 
$firstItem->insertBefore($newItem,$firstItem->firstChild); 

$rssDoc->formatOutput = true; 
echo $rssDoc->saveXML(); 

我錯過了什麼?

回答

1

我得到它的工作。我改變了這些行:

$firstItem = $items->item(0); 
$firstItem->insertBefore($newItem,$firstItem->firstChild); 

這一行:

$items->item(0)->parentNode->insertBefore($newItem,$items->item(0)); 
1

「我錯過了什麼?」

輸出:$rssDoc->save('filename.xml')http://php.net/domdocument.save.php

+0

嗯,其實,最後一行切斷。我會解決它。但這不是問題。它寫出之前有什麼,但實際上並沒有附加新項目。 – aynber