我需要提取http查询生成的xml结果的值

时间:2012-03-29 16:00:09

标签: php xml variables extract

我真的能帮上这个,这让我很生气!

我需要从http查询生成的xml文件中提取值...

我会解释......

我需要在这一行添加一个变量:

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输出中,我需要在<image size="medium"中提取URL并将其放入另一个变量...

对不起一个基本问题(或者可能是一个很长的答案),但我真的根本不知道如何去做这个......

提前感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:0)

您可以查看php中的XPATH function以获取该特定图片链接... php docs足以帮助您...

答案 1 :(得分:0)

假设您在$str中有XML字符串:

$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;
            }
        }
    }
}

您可以使用simplexml_load_file()直接从网址抓取XML,而不是加载字符串。

答案 2 :(得分:0)

我为我制作的应用使用Last.fm Feed并获取我使用的图片:

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

$ imageurl是Last.FM的网址,$ image会显示该图片的网址