在DomDocument中创建<media:thumbnail>命名空间

时间:2015-09-11 00:20:42

标签: php rss domdocument

我正在尝试添加&lt;媒体:缩略图&gt; 到我的RSS Feed,但在添加URL,WIDTH,HEIGHT等属性以及删除结束标记&lt;时遇到问题/媒体:缩略图&GT; 即可。该代码的来源来自here,我根据自己的需要进行了编辑,并按照解释here进行了添加。

if($results){ //we have records
    while($row = $results->fetch_object()) //loop through each row
    {
        $item_node = $channel_node->appendChild($xml->createElement("item")); //create a new node called "item"
        $title_node = $item_node->appendChild($xml->createElement("title", $row->cName)); //Add Title under "item"
        $link_node = $item_node->appendChild($xml->createElement("link", "http://www.your-site.com/link/goes/here/")); //add link node under "item"

        $root = $xml->createElementNS('image.png', 'media:thumbnail');
        $root = $xml->appendChild($root);

        //Unique identifier for the item (GUID)
        $guid_link = $xml->createElement("guid", "http://www.your-site.com/link/goes/here/". $row->id);  
        $guid_link->setAttribute("isPermaLink","false");
        $guid_node = $item_node->appendChild($guid_link);

    }
}

输出:

<media:thumbnail xmlns:media="image.png"/>
<media:thumbnail xmlns:media="image.png"/>
<media:thumbnail xmlns:media="image.png"/>
<media:thumbnail xmlns:media="image.png"/>
<media:thumbnail xmlns:media="image.png"/>
<media:thumbnail xmlns:media="image.png"/>

输出应该如下所示,但我不能再做任何事了,因为开始已经不起作用了。

<media:thumbnail url="http://www.foo.com/keyframe.jpg" width="75" height="50" time="12:05:01.123" />

1 个答案:

答案 0 :(得分:1)

确保已在RSS文档中添加允许媒体的名称空间属性:缩略图节点:

$rss_node->setAttribute("xmlns:media","http://search.yahoo.com/mrss/")

这里假设您使用变量名称&#34; $ rss_node&#34;保持调用appendChild的结果以将rss数据附加到xml文档。

然后处理从数据库中提取的数据行中的缩略图。替换这个:

$root = $xml->createElementNS('image.png', 'media:thumbnail');
$root = $xml->appendChild($root);

有了这个:

$thumbnail_node = $xml->createElement("media:thumbnail");
$thumbnail_node->setAttribute( "URL", "http://www.foo.com/keyframe.jpg");
$thumbnail_node->setAttribute( "width", "75");
$thumbnail_node->setAttribute( "height", "75" );
$thumbnail_node->setAttribute( "time", "12:05:01.123");
$thumbnail_node = $item_node->appendChild($thumbnail_node);

当然,将setAttribute中的文字值更改为将提供您想要呈现的实际数据的变量或文字。

以下是该细分实际产生的内容:

<media:thumbnail URL="http://www.foo.com/keyframe.jpg" width="75" height="75" time="12:05:01.123"/>