【问题标题】:PHP - create VLC PlaylistPHP - 创建 VLC 播放列表
【发布时间】:2020-06-16 07:49:08
【问题描述】:

我目前正在尝试使用 PHP 创建一个 VLC 播放列表。这适用于 SimpleXML,但有一点我被卡住了。 VLC 播放列表需要一个起始标签,例如:

<?xml version="1.0" encoding="UTF-8"?>

但是 Simple XML 总是在整个元素周围创建一个 xml 标签,看起来像

<xml>
    <tag></tag>
</xml>

但我需要的是:

<?xml version="1.0" encoding="UTF-8"?>
<playlist xmlns="[...]" xmlns:vlc="[...]" version="1"> 
    <title>Test<title>
    <trackList>
        [...]
    </trackList>
</playlist> 

如何使用 simpleXML 创建这样的 xml 文件?

【问题讨论】:

  • 只需在 xml 输出的第一个添加字符串()。

标签: php xml simplexml vlc


【解决方案1】:

您错过了一些有关 XML 的细节,这些细节会让您陷入错误的假设。让我们阐明一下:

VLC 播放列表需要一个起始标签,例如:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;

这在很多方面都是错误的。首先,这 不是 一个起始标记。这就是所谓的XML Declaration。所以它不是一个起始标签,而是一些不同的东西。

其次,VLC 不需要这个。 XML 声明是可选的,因此它适用于 VLC。

但是 Simple XML 总是在整个元素周围创建一个 xml 标签,看起来像

不,Simple XML 处理得很好。它不会在整个元素周围创建 xml 标记。 所做的实际上是错误的,导致了错误的结果。但在这种情况下,这不是 SimpleXML 的错,而是你的错(你没有共享代码,所以请原谅我在这里做的概括)。

然后你问如何用 SimpleXML 创建一些 XML 文件。使用您共享的(少量)信息,它是这样的:

$playlist = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><playlist xmlns="uri:1" xmlns:vlc="uri:2" version="1"/>');
$playlist->title = 'Test';
$playlist->trackList = "[...]";
$playlist->asXML('php://output');

然后输出是:

<?xml version="1.0" encoding="utf-8"?>
<playlist xmlns="uri:1" xmlns:vlc="uri:2" version="1"><title>Test</title><trackList>[...]</trackList></playlist>

如果你想打印得漂亮,请看这里:PHP simpleXML how to save the file in a formatted way?

【讨论】:

    【解决方案2】:
    $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><playlist></playlist>');
    $trackList = $xml->addChild('trackList');
    foreach ($_POST['files'] as $video) {
        $track = $trackList->addChild('track');
        $track->addChild('location', 'file://'.$tmp_dir.'/'.$video['path']);
        $track->addChild('title', $video['name']);
    }
    file_put_contents('playlist.xspf',$xml->asXML());
    

    【讨论】:

      猜你喜欢
      • 2018-10-11
      • 2013-05-13
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多