PHP中的XML循环语句


XML Loop Statement in PHP

嘿,我有一个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循环,遍历所有条目并检查这是否为真?这样做对吗?

我为我混乱的解释道歉

---- EDIT ----

下面是获取数据的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";
    }

?>

好吧,虽然这里可能的重复是一个基于您的文件的非常简单的例子。

我想你有这样的东西:

<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>

为了提取属性类型为"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";
    }
?>

如果需要获取属性,可以使用下面的示例

$Attributes = $Node->attributes();