чтение данных из разобранного XML - PullRequest
1 голос
/ 23 октября 2011

У меня есть XML-файл, который возвращается API. Я хочу извлечь из него специальные данные. Я преобразовал XML в массив с помощью $xml = simpleXMLToArray(simplexml_load_string($response)); $ response - это XML. $ xml - это массив, содержащий все данные XML. Я хочу извлечь из него данные, но он не работает.

foreach($xml['conetent']['album']['media'] as $media)
    {
        //var_dump($media);
      echo $media;
    }

Ответы [ 2 ]

0 голосов
/ 23 октября 2011

Похоже, у вас есть два уровня тегов альбома.Вероятно, было бы проще не использовать simpleXMLToArray (), а просто искать ваши медиафайлы с помощью xpath :

$result= $xml->xpath('//media');

while(list( , $node) = each($result)) {
    echo '/media: ',$node,"\n";
}
0 голосов
/ 23 октября 2011

Это прекрасно работает, как только вы исправили написание слова «conetent» на «content»

Edit:

Итак, с обновлением от вашего вопроса, как насчет этого:

foreach ($xml->xpath('//content/album') as $album)
{
    print "Album: ";
    foreach($album->attributes() as $key => $value)
        print "\t".$key." = ".$value."\n";
    foreach($album->xpath('album') as $subalbum)
    {
        print "\tSub album:\n";
        foreach($subalbum->attributes() as $key => $value)
            print "\t\t".$key." = ".$value."\n";
    }
}
...