1

我使用 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 打印出来?

第三个问题是如何添加end rss</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 的新手,对不起:/

4

2 回答 2

1

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

由于 RSS 是基于 XML 的,因此您不必担心该行是否存在。

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

由于问答通常最适合每个问题,因此以下是另外两个问题:

于 2013-02-18T18:19:12.880 回答
0

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

  header("Content-type: text/xml");
于 2019-02-05T01:16:47.867 回答