从xml文件创建html5播放列表

时间:2013-10-07 21:16:44

标签: javascript php html xml audiojs

我正在尝试使用audiojs插件创建HTML5播放列表。我的播放列表位于外部XML文件中,因为它由自定义CMS管理:

<playlist>
   <item>
     <title>bla bla bla</title>
     <artist>Big Bla</artist>
     <path>/mp3/bla-bla-bla.mp3</path>
   </item>
   <item>
     <title>bla bla blab</title>
     <artist>lil Big Bla</artist>
     <path>/mp3/bla-bla-bla.mp3</path>
   </item>
</playlist>

这是我的.php文件:

        <div id="player-holder">
            <audio preload></audio>
            <ul>
                <li>
                    <a data-src="track path" href="#">title</a>
                </li>
                <li>
                    <a data-src="track path" href="#">title</a>
                </li>
                <li>
                    <a data-src="track path" href="#">title</a>
                </li>
            </ul>
        </div>

我需要从XML文档中获取歌曲路径并将其添加到“data-src”属性中,然后获取歌曲标题并将其显示为锚链接。

我有大约6首曲目进入播放列表,因此我需要循环遍历XML中的每个项目,并将这些数据输出到自己的列表项中。

2 个答案:

答案 0 :(得分:0)

PHP有一个内置的XML解析器。

http://php.net/manual/en/book.xml.php

编辑:如果您的结构提前知道,这个lib可能会更容易一些...... http://www.php.net/manual/en/simplexml.examples-basic.php

使用它,以及CURL或标准file_get_contents()调用,您应该能够让服务器检索XML,将其解析为树结构,并迭代结果以生成HTML for显示。

<?php
$playlistXML = file_get_contents('http://whatever.cms.com/playlist.xml');
$playlist = new SimpleXMLElement($playlistXML);
foreach($playlist->item as $song) {  ?>
   <a href="<?= $song->path; ?>"><?= $song->title.' - '.$song->artist; ?> </a>
<?php } ?>

答案 1 :(得分:0)

我投票给SimpleXML

完全放弃,您将从服务器加载XML,使用SimpleXML解析它,然后使用提供的标题和艺术家将列表中的每首歌曲迭代到模板列表项。

<?php
/* first load the XML and create the containing div */
    $playlistRawXML = file_get_contents('http://example.com/path/to/playlist.xml');

    try {
       $playlist = new SimpleXMLElement($playlistRawXML);
    } catch (Exception $e) {
       /* if SimpleXML can't parse the file, it'll throw an exception */
       echo "XML parsing error";
       var_dump($e);
       exit;
    }
?>
<div id="player-holder">
    <audio preload></audio>
    <ul>

<?php
    /* then, for each song in the playlist, render a list item: */

    foreach($playlist->item as $song) {  
        echo '<li><a data-src="' . $song->path . '" href="#">' . $song->title . ' (' . $song->artist . ')</a></li>';
     }

     /* and then end the list, div, etc.: */
 ?>

  </ul>
</div>