Php写XML文件(给JW播放器)

时间:2013-02-18 15:30:12

标签: php xml xml-parsing jwplayer

我使用JW播放器加载XML播放列表。当我手动编写XML文件时,它工作正常,但是当我使用php解析时...

我希望它看起来像这样:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:jwplayer="http://developer.longtailvideo.com/trac/"> 
<channel>
  <item>
    <title>Albert</title>
    <media:content url="../movies/hi.mp4" />
    <description></description>
    <jwplayer:duration>10</jwplayer:duration>
  </item>
</channel>
</rss>

第一个问题是<rss version="2.0" ... 它强制标题为:<?xml version="1.0"?>

第二个问题是<media:content url="" ... 我怎样才能用php打印出来?

第三个问题是如何添加结束rs </rss>

我的代码是:

<?php 
  $channel = array(); 
  $channel [] = array( 
  'title' => 'Albert', 
  'content' => 'filmer/c1.jpg', 
  'duration' => "10" 
  ); 
  $channel [] = array( 
  'title' => 'Claud', 
  'content' => 'filmer/c2.jpg', 
  'duration' => "10" 
  ); 

  $doc = new DOMDocument();
  $doc->formatOutput = true; 

  $r = $doc->createElement( "channel" ); 
  $doc->appendChild( $r ); 

  foreach( $channel as $item ) 
  { 
  $b = $doc->createElement( "item" ); 

  $title = $doc->createElement( "title" ); 
  $title->appendChild( 
  $doc->createTextNode( $item['title'] ) 
  ); 
  $b->appendChild( $title ); 

  $content = $doc->createElement( "media:content" ); 
  $content->appendChild( 
  $doc->createTextNode( $item['content'] ) 
  ); 
  $b->appendChild( $content ); 

  $duration = $doc->createElement( "jwplayer:duration" ); 
  $duration->appendChild( 
  $doc->createTextNode( $item['duration'] ) 
  ); 
  $b->appendChild( $duration ); 

  $r->appendChild( $b ); 
  } 

  echo $doc->saveHTML(); 
  $doc->save("write.xml") 
  ?>

有什么想法吗? 我是PHP / XML的新手,对不起:/

2 个答案:

答案 0 :(得分:1)

这一行:<?xml version="1.0"?>被称为XML Declaration,它是可选的。因此,只要您使用有效的XML,该行是否存在就不会产生任何影响并造成任何问题。

由于RSS基于XML,因此您无需担心该行存在。

我希望这能澄清你问题的这一部分。

由于Q&amp; A通常最好用一个问题,所以其他两个:

答案 1 :(得分:0)

有必要在xml中的php代码之前放置一个标头,以通知jwplayer正在加载什么。

  header("Content-type: text/xml");