我正在尝试使用PHP调用XML数组,但无论出于何种原因,它都无法正确提供结果。 XML看起来像simpleXMLElement。
SimpleXMLElement对象 ( [@attributes] =>排列 ( [copyright] =>所有数据版权归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
)
)
stop数组有几个部分。我的代码如下所示:
$url = "this_url";
$content = file_get_contents($url);
$xml = new SimpleXMLElement($content);
$route_array = $xml->route->stop;
当我打印$ route_array时,它只显示来自停靠点的1条记录。我需要通过循环运行吗?通常,当我在JSON中执行此操作时,它可以正常工作。我想只在停止数组中获取所有内容。
先谢谢所有专家帮助像我这样的初学者
答案 0 :(得分: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