使用PHP解析XML
问题描述:
我对XML没什么问题。我的XML文件是这个样子:使用PHP解析XML
http://pastebin.com/MQUB2W2B我的用户,因为引擎收录本网站不支持XML代码..://
,所以我需要选择源支架“/流”等源安装“/”。我的PHP代码如下所示:
Class stream {
Public Function __construct($host, $path, $user, $pass, $mpoint){
$this->host = $host;
$this->path = $path;
$this->user = $user;
$this->password = $pass;
$this->mpoint = $mpoint;
$this->url = "http://{$this->user}:{$this->password}@{$this->host}/{$this->path}";
$this->xml = simplexml_load_file($this->url);
}
Public Function audio($url, $format){
return print "<audio controls> <source src=\"{$url}\" type=\"audio/{$format}\"> </audio>";
}
Public Function stream_meta(){
$xml = $this->xml->registerXPathNamespace('test', '/{$this->mpoint}');
$result = $xml->xpath('test:artist');
return $result;
}
Public Function nowplay(){
return $this->xml->source[0]->artist;
}
Public Function download($format){
$link = "http://{$this->host}/{$this->mpoint}";
if($format == "m3u"){
return "{$link}.m3u";
}
elseif($format == "xspf"){
return "{$link}.xspf";
}
elseif($format == "vclt"){
return "{$link}.vclt";
}
return false;
}
}
所以现在我问我做错了什么或者我能做得更好?我需要选择艺术家数据并且知道什么是源码“”这是什么?“。我真的需要帮助。我不知道我能做什么,我不发明其他方式来做到这一点。我很累,我真的需要帮助!请帮助我吗?我不想使用“nowplay()”功能。因为源安装“/ example”更改有时...
答
我不完全清楚你想要实现什么,但这里是获取每个源的装载和艺术家在XML中的基本示例:
function sources(){
foreach($this->xml->source as $source) {
echo "Mount: " . $source->attributes()['mount'] . '<br>';
echo "Artist: " . $source->artist . '<br>';
}
}
还是要找到一个源艺术家:
$source = $this->find_source('/stream');
$artist = $source->artist;
function find_source($s){
foreach($this->xml->source as $source) {
if ($source->attributes()['mount'] == $s) {
return $source;
}
}
}
或者,你可以做XPath同样无需使用一个循环。例如:
function find_source($s){
return $this->xml->xpath('/icestats/source[@mount="'.$s.'"]')[0];
}
Thanks!但我怎么才能得到
非常感谢!我必须去测试这个! – T0niiiiii
就像只有一个艺术家的'source',或者'mount =“/ stream”'的艺术家一样? –