Мне нужно извлечь значение результата XML, сгенерированного запросом http - PullRequest
0 голосов
/ 29 марта 2012

Я действительно мог бы помочь с этим, это сводит меня с ума!

Мне нужно извлечь значение из файла XML, который генерируется запросом http ...

Я объясню ...

Мне нужно добавить переменную в эту строку:

http://ws.audioscrobbler.com/2.0/?method=artist.search&artist=ADD_ARTIST_HERE&api_key=b25b959554ed76058ac220b7b2e0a026

Что я могу сделать с редактированием некоторых переменных в php

Это создаст XML-файл, который выглядит следующим образом:

    <lfm status="ok">
    <results for="rihanna">
    <opensearch:Query role="request" searchTerms="rihanna" startPage="1"/>         
    <opensearch:totalResults>3821</opensearch:totalResults>  
    <opensearch:startIndex>0</opensearch:startIndex>
    <opensearch:itemsPerPage>30</opensearch:itemsPerPage>
    <artistmatches><artist><name>Rihanna</name>
    <listeners>3236233</listeners>
    <mbid>73e5e69d-3554-40d8-8516-00cb38737a1c</mbid>
    <url>http://www.last.fm/music/Rihanna</url>
    <streamable>1</streamable>
    <image size="small">http://userserve-ak.last.fm/serve/34/71057304.png</image>
    <image size="medium">http://userserve-ak.last.fm/serve/64/71057304.png</image>
    <image size="large">http://userserve-ak.last.fm/serve/126/71057304.png</image>
    <image size="extralarge">http://userserve-ak.last.fm/serve/252/71057304.png</image>

И так файл продолжается ...

Из этого вывода XML, сгенерированного из моего исходного запроса, янужно извлечь URL в <image size="medium" и поместить его в другую переменную ...

Извините за простой вопрос (или какой может быть длинный ответ), но я действительно не знаю, как это сделатьодин на всех ...

Заранее благодарю за любую помощь, которую вы можете оказать мне.

Ответы [ 3 ]

0 голосов
/ 29 марта 2012

Если у вас есть строка XML в $str:

$xmlObj = simplexml_load_string($str);    

foreach($xmlObj->results as $result)
{
    foreach($result->artistmatches->artist as $artist)
    {
        foreach($artist->image as $image)
        {
            if($image->attributes()->size == 'medium')
            {
                echo 'size medium: ' . (string)$image;
            }
        }
    }
}

Вместо загрузки строки вы можете получить XML непосредственно из URL с помощью simplexml_load_file () .

0 голосов
/ 29 марта 2012

Я использую канал Last.fm для приложения, которое я сделал, и для получения изображений, которые я использовал:

$imagexml = simplexml_load_file($imageurl) or $error = "Feed Not Loading";
$album = $imagexml->album;
$image = (string) $album->image[2];

$ imageurl является URL для Last.FM, а $ image даст вам URL этого изображения

0 голосов
/ 29 марта 2012

Вы можете взглянуть на XPATH функцию в php, чтобы перейти к этой конкретной ссылке на изображение ... php документы достаточно, чтобы помочь вам ...

...