1

我正在尝试使用 PHP 调用 XML 数组,但无论出于何种原因,它都无法正确提供结果。XML 看起来像这样一个 simpleXMLElement。

SimpleXMLElement 对象([@attributes] => 数组([版权] => 所有数据版权所有 2012。)

[route] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [tag] => 385
                [title] => 385-Sheppard East
                [color] => ff0000
                [oppositeColor] => ffffff
                [latMin] => 43.7614499
                [latMax] => 43.8091799
                [lonMin] => -79.4111
                [lonMax] => -79.17073
            )

        [stop] => Array
            (
                [0] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [tag] => 14798
                                [title] => Sheppard Ave East At Yonge St (Yonge Station)
                                [lat] => 43.7614499
                                [lon] => -79.4111
                                [stopId] => 15028
                            )

                    )
              [1] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [tag] => 4024
                                [title] => Sheppard Ave East At Doris Ave
                                [lat] => 43.7619499
                                [lon] => -79.40842
                                [stopId] => 13563
                            )

                    )

停止数组有几个部分。我的代码如下所示:

$url = "this_url";
$content = file_get_contents($url);
$xml = new SimpleXMLElement($content);
$route_array = $xml->route->stop;

当我打印 $route_array 时,它只显示停靠点的 1 条记录。我需要通过循环运行它吗?通常,当我在 JSON 中执行此操作时,它可以正常工作。我只想在停止数组中获取所有内容。

在此先感谢所有帮助像我这样的初学者的专家

4

1 回答 1

1

在 SimpleXML 元素上使用print_r并不总能为您提供全貌。您的元素在那里但未显示。

$xml->route->stop是一个<stop>标签数组<route>。因此,如果您想遍历每个停止标签,则:

foreach($xml->route->stop as $stop)
{
    echo (string)$stop; // prints the value of the <stop> tag
}

在循环中,$stop是一个 SimpleXML 元素,因此为了打印它的值,您可以使用(string)语法将整个元素转换为字符串。您仍然可以访问属性和其他 SimpleXML 元素属性。

如果您知道<stop>要定位哪个元素,那么您可以直接获取它:

echo (string)$xml->route->stop[1]; // prints the second <stop> value
于 2012-11-19T14:27:24.697 回答