foreach при разборе xml, но показывает только одну запись - PullRequest
0 голосов
/ 18 августа 2011
foreach($xml1->results as $info) {
                    $title = $info->listing->title;
                    $favicon = $info->listing->favicon;


                    echo $favicon;
                    echo "<a href=".$redirect;
                    echo ">".$title."</a><BR>";

                }

На выходе все в порядке, но отображается только одна запись. В чем может быть проблема.

Структура XML

<listing>
   <title></title>
   <url></url>
   <description>[result-description]</description>
</listing>

Ответы [ 2 ]

0 голосов
/ 18 августа 2011

Это работает для меня:

$xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<results>
    <listing>
        <title>title 1</title>
        <favicon>fav1</favicon>
    </listing>
    <listing>
        <title>title 2</title>
        <favicon>fav2</favicon>
    </listing>
</results>
";


$xmlObj=simplexml_load_string($xml);

foreach($xmlObj as $info){
    $title = $info->title;
    $favicon = $info->favicon;


    echo $favicon;
    echo "<a href=''";
    echo ">".$title."</a><BR>";

}
0 голосов
/ 18 августа 2011

Ваш код и вопрос предполагают, что $ xml содержит тег как минимум с двумя тегами «результаты».

Simplexml игнорирует корневой тег как часть объекта, он включает только атрибуты.

поэтому, если ваш xml выглядит как

<results>
    <listing>
        <title></title>
        <favicon></favicon>
    </listing>
    <listing>
        <title></title>
        <favicon></favicon>
    </listing>
</results>

, код должен быть

foreach($xml1->listing as $info)
...