2016-05-04 13 views
0

內容的XML我面臨着一些問題的,我不知道如何解決它如何geneate媒體:使用PHP

我想寫以下使用PHP和MySQL的RSS供稿:

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"> 
<channel> 
<item> 
<title>Here is the title</title> 
<link>http://example.com</link> 
<media:content medium="image" url="http://example.com/image.jpg"></media:content> 
<media:content medium="video" url="http://example.com/video.mp4"></media:content> 
</item> 
</channel> 
</rss> 

這裏我在PHP代碼:

$db = new Db(); 

    $result = $db->select("select * from column"); 

    $xml = new SimpleXMLElement('<channel/>'); 


    for ($i = 0; $i < count($result); $i++) { 

     $title = $result[$i]title 
     $link = $result[$i]['link']; 
     $image = $result[$i]['image']; 
    $video = $result[$i]['video']; 

     $item = $xml->addChild('item'); 

     $item->title = $title 
     $item->link = $link 
     $item->image = ?? ; 
     $item->video = ?? ;  

    } 
    Header('Content-type: text/xml'); 
    print($xml->asXML()); 

只是不知道如何設定圖像和視頻,因爲標籤是像媒體不同:既有圖像和視頻標籤的內容和網址。請讓我知道

謝謝

+0

空間前綴例如XML中的'media',需要在某處進行聲明(沿着這一行:'xmlns:media =「foo」')。由於發佈的XML格式不正確。現在,您希望ns前綴聲明是哪個元素? – har07

回答

2

你不能那樣做。您的XML無效。前綴的標籤必須有一個聲明的命名空間URI,你的情況 'http://search.yahoo.com/mrss/':

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"> 
(...) 
</rss> 

您可以使用->addChild創建命名空間的元素:

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"> 
<channel/> 
</rss>'); 

(...) 

$item = $xml->channel->addChild('item'); 

$item->title = $title; 
$item->link = $link; 

/* Add <media:image>: */ 
$node = $item->addChild('image', Null, 'http://search.yahoo.com/mrss/'); 
$node->addAttribute('url', $image); 

/* Add <media:video>: */ 
$node = $item->addChild('video', Null, 'http://search.yahoo.com/mrss/'); 
$node->addAttribute('url', $video); 

結果:

<?xml version="1.0" encoding="utf-8"?> 
<rss xmlns:media="http://search.yahoo.com/mrss/" version="2.0"> 
    <channel> 
     <item> 
      <title>Your Title</title> 
      <link>http://www.somelink.it/</link> 
      <media:image url="http://www.image.com/"/> 
      <media:video url="http://www.video.com/"/> 
     </item> 
    </channel> 
</rss> 
+0

你是天才的非常感謝,請讓我知道我的媒體內容標籤中的XML圖像媒體的最後一件事情,請你可以清除這一點:''給我的xml網站是[link](http://news.yahoo.com/rss/) –

+1

我不明白。請澄清 – fusion3k

+0

,因爲正如你所說的那樣,媒體標籤在內容上有點不同,所以必須要求打開和關閉媒體內容的標籤,例如'' –