如何生成媒体:使用php生成内容xml


How to geneate media:content xml using 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());

只是不知道如何设置图像和视频,因为有不同的标签像媒体:图像和视频标签的内容和url。请告诉我

感谢

你不能那样做。您的XML无效。前缀标记必须具有声明的NameSpace 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>