Создать список воспроизведения HTML5 из файла XML
Я пытаюсь создать список воспроизведения HTML5 с помощью плагина audiojs. Мой список воспроизведения находится во внешнем файле 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 ответа
Я бы проголосовал за 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>
PHP имеет встроенный синтаксический анализатор XML.
http://php.net/manual/en/book.xml.php
РЕДАКТИРОВАТЬ: Эта библиотека может работать немного проще, если ваша структура известна заранее... http://www.php.net/manual/en/simplexml.examples-basic.php
Используя это, а также CURL или стандарт file_get_contents()
вызов, вы должны быть в состоянии заставить сервер извлекать XML, анализировать его в древовидную структуру и перебирать результаты для генерации HTML для отображения.
<?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 } ?>