Оператор XML Loop в PHP - PullRequest
       22

Оператор XML Loop в PHP

0 голосов
/ 30 апреля 2011

Привет, у меня есть документ simpleXMLElement, содержащий массив данных для альбомов артиста.

Ниже приведен фрагмент этого XML

  [2] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [num] => 3
                                [type] => artist
                            )

                        [title] => DJ Tiësto
                        [uri] => http://www.discogs.com/artist/DJ+Ti%C3%ABsto
                        [summary] => DJ Tiësto Tijs Michiel Verwest Dutch trance DJ & producer.

В этом XML-документе содержится много разных типов информации от информации об исполнителе до названий альбомов. Я хочу извлечь определенные части этих данных и вывести их на экран. Например, я хочу извлечь сводку записей массива, для которых [тип] определен для исполнителя. Я предполагаю, что я использовал бы цикл foreach, который прошел все записи и проверил, правда ли это? Это правильный путь?

Я прошу прощения за мое запутанное объяснение

---- РЕДАКТИРОВАТЬ ----

Вот код PHP, который захватывает данные -

<?php
 $curl = curl_init();
 curl_setopt($curl, CURLOPT_URL, "http://www.discogs.com/search?type=all&" .
"q=DJ+Tiësto&" . 
"f=xml&" . 
"api_key=<key>");
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($curl, CURLOPT_ENCODING, "gzip");
 $result = curl_exec($curl);
 curl_close($curl);


  $xmlmusic = new SimpleXMLElement($result,NULL,true);

 foreach ($xmlmusic as $xm)
    {
    $attrs = $xm->attributes();
    if($attrs["type"] == "title")
        echo $xm->summary."\n";
    }

?>

Ответы [ 2 ]

1 голос
/ 30 апреля 2011

Ну, хотя возможное дублирование здесь - очень простой пример, основанный на вашем файле.

Я полагаю, у вас есть что-то вроде этого:

<music>
    <dj num="3" type="artist">
        <title>DJ Tiesto</title>
        <uri>http://www.discogs.com/artist/DJ+Ti%C3%ABsto</uri>
        <summary>DJ Tiësto Tijs Michiel Verwest Dutch trance DJ producer.</summary>
    </dj>
    <dj num="4" type="artist">
        <title>title</title>
        <uri>url</uri>
        <summary>summary</summary>
    </dj>

InДля того, чтобы извлечь резюме, где атрибут type равен "title", как вы и просили, вам нужно что-то вроде этого:

<?php
    $result = file_get_contents("http://www.discogs.com/search?type=all&" .
               "q=DJ+Tiësto&" . 
               "f=xml&" . 
               "api_key=<key>");

    $xmlmusic = new SimpleXMLElement($result, NULL, false);

    //print_r($xmlmusic);

    foreach ($xmlmusic as $xm)
    {
        $attrs = $xm->attributes();
        if($attrs["type"] == "title")
            echo $xm->summary."\n";
    }
?>

Проверьте сами, все работает.

0 голосов
/ 30 апреля 2011

если вам нужно получить атрибуты, вы можете использовать ниже пример

$Attributes = $Node->attributes();

...