2016-03-06 3 views
0

У меня мало проблем с XML. Мой файл XML является выглядеть следующим образом:XML-анализ с PHP

http://pastebin.com/MQUB2W2B я Pastebin пользователя, потому что этот сайт не поддерживает код 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()». потому что источник крепления "/ пример" изменить иногда ...

ответ

0

Я не совсем понимаю, чего вы пытаетесь достичь, но вот базовый пример получения монтирования и исполнителя каждого источника в 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]; 
} 
+0

Спасибо! но как я могу получить только artist? не все mount – T0niiiiii

+0

Спасибо большое! Я должен проверить это! – T0niiiiii

+0

Как в «источнике» только для одного исполнителя, или для художника «mount =»/stream »? –

Смежные вопросы