我面临一些问题,我不知道如何解决
我想使用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>