2011-03-03 87 views
0

我需要通過PHP將新的item元素添加到我的RSS文件,而無需從PHP生成RSS。我知道這將需要刪除舊的項目,以匹配我想要顯示的數字,但我不知道如何將它們添加到文件中。將PHP添加到RSS文件中,而不通過PHP生成RSS

我的代碼看起來有點像這樣:

<rss version="2.0"> 
    <channel> 
    <title>My Site Feed</title> 
    <link>http://www.mysitethathasfeed.com/feed/</link> 
    <description> 
     A nice site that features a feed. 
    </description> 
    <item> 
     <title>Launched!</title> 
     <link>http://www.mysitethathasfeed.com/feed/view.php?ID=launched</link> 
     <description> 
      We just launched the site! Come join the celebration! 
     </description> 
    </item> 
    </channel> 
</rss> 
+0

你是什麼意思「而不會產生RSS」是什麼意思?聽起來你需要解析現有的文檔,操作它,然後重新生成並輸出RSS。 – deceze 2011-03-03 02:38:43

+0

我的意思是訪問時不會生成內容。 RSS需要時才添加,然後在訪問RSS時不需要PHP處理。 – 2011-03-03 03:00:14

+0

@Tanner:我明白你要做什麼 - 這是一個靜態的RSS文件,它由PHP操作,然後作爲靜態文件重新存儲,而不是通過執行PHP腳本隨時隨地創建的文件。你有任何理由採取這種方法嗎?通過執行PHP腳本即時生成RSS輸出是管理動態內容的更好方式。 – 2011-03-03 03:36:14

回答

0

擴展凱爾(哦OOP的傳承)的答案,並引用來自PHP Manual

<?php 

$rss = file_get_contents('feed.rss'); 
$dom = new DOMDocument(); 
$dom->loadXML($rss); 

// should have only 1 node in the list 
$nodeList = $dom->getElementsByTagName('channel'); 

// assuming there's only 1 channel tag in the RSS file: 
$nChannel = $nodeList->item(0); 

// now create the new item 
$newNode = $dom->createElement('item'); 
$newNode->appendChild($dom->createElement('title', 'a new title post')); 
$newNode->appendChild($dom->createElement('link', 'http://www.mysitethathasfeed.com/feed/view.php?ID=launched')); 
$newNode->appendChild($dom->createElement('description', 'This is the 2nd post of our feed.')); 

// add item to channel 
$nChannel->appendChild($newNode); 
$rss = $dom->saveXML(); 
file_put_contents('feed.rss', $rss); 
1
// Load the XML/RSS from a file. 
$rss = file_get_cotents('path_to_file'); 
$dom = new DOMDocument(); 
$dom->loadXML($rss); 

使用http://php.net/manual/en/book.dom.php學習如何修改您所加載的DOM。