使用SimpleXML从XML获取多个项目

时间:2014-03-15 17:12:34

标签: php xml foreach simplexml

我尝试使用以下代码从XML循环多个项目。

$xml = get_data('the-url');
$data = simplexml_load_string($xml);

foreach($data->item AS $item) {
    foreach($item AS $test) {
        var_dump($test);
    }
}

XML看起来像这样:

<xml>
    <item>
        <name>...</name>
        <chapter>...</chapter>
        <text>
            ...
        </text>
    </item>
    <item>
        <name>...</name>
        <chapter>...</chapter>
        <text>
            ...
        </text>
    </item>
    <item>
        <name>...</name>
        <chapter>...</chapter>
        <text>
            ...
        </text>
    </item>
    <item>
        <name>...</name>
        <chapter>...</chapter>
        <text>
            ...
        </text>
    </item>
    <item>
        <name>...</name>
        <chapter>...</chapter>
        <text>
            ...
        </text>
    </item>
</xml>

就像现在一样,var_dump($test)打印出来:

object(SimpleXMLElement)#7 (0) { } object(SimpleXMLElement)#8 (0) { }
object(SimpleXMLElement)#7 (0) { } object(SimpleXMLElement)#8 (0) { }
object(SimpleXMLElement)#7 (0) { } object(SimpleXMLElement)#8 (0) { }
object(SimpleXMLElement)#7 (0) { } object(SimpleXMLElement)#8 (0) { }
object(SimpleXMLElement)#7 (0) { } object(SimpleXMLElement)#8 (0) { }
object(SimpleXMLElement)#7 (0) { } object(SimpleXMLElement)#8 (0) { }
object(SimpleXMLElement)#7 (0) { } object(SimpleXMLElement)#8 (0) { } ...

如何让我的代码循环所有项目并打印值?

1 个答案:

答案 0 :(得分:0)

试试这个:

$xml_content = file_get_contents('http://url/feed.xml');
$data = simplexml_load_string($xml_content);

foreach ($data->item as $item) {
    var_dump($item->bookname);
}

如果需要,您还可以将整个$项目转换为数组:

foreach ($data->item as $item) {
    $itemArray = (array) $item;
    var_dump($itemArray);
}

当您需要先转换为字符串以返回文本值时,您正在转储对象。 此外,我不认为第二个foreach正在做任何事情或需要,所以我删除了它。