来自URL的XML多维数组php

来自URL的XML多维数组php,php,arrays,xml,Php,Arrays,Xml,我已经为这件事伤了两天的脑筋了,所以我希望有人能帮点忙 我需要来自XML的数据,这是我从网站上获得的。代码返回一个不错的列表,但缺少时间数组(数组中的数组)。 这是我的密码: <?php $url="http://publications.elia.be/Publications/Publications/WindForecasting.v1.svc/GetForecastGraphDataXml?beginDate=2015-05-13&endDate=2015-05-18&a

我已经为这件事伤了两天的脑筋了,所以我希望有人能帮点忙

我需要来自XML的数据,这是我从网站上获得的。代码返回一个不错的列表,但缺少时间数组(数组中的数组)。 这是我的密码:

<?php 
$url="http://publications.elia.be/Publications/Publications/WindForecasting.v1.svc/GetForecastGraphDataXml?beginDate=2015-05-13&endDate=2015-05-18&isOffshore=&isEliaConnected=";
echo $url;

$sxml = Simplexml_load_file($url);
var_dump($sxml);
foreach ($sxml ->ForecastGraphItems ->WindForecastingGraphItem as $type){
    echo 'FC ';
    echo $type ->Forecast."<br>";
    echo 'LF ';
    echo $type ->LoadFactor."<br>";
    echo 'DT ';
    echo $type ->Time[0]->DateTime;
    echo "<br>";
    echo 'BID ';
    echo $type ->Bid."<br>";
    echo 'RA '; 
    echo $type ->RunningAverage."<br>";
    echo "<br>";
}
?>
ForecastGraphItems->windForecastGraphItem作为$type){
回声“FC”;
echo$类型->预测。“
”; 回声“LF”; echo$type->LoadFactor.“
”; 回声“DT”; echo$type->Time[0]->DateTime; 回声“
”; 呼应‘出价’; echo$type->Bid。“
”; 回声“RA”; echo$type->RunningAverage.“
”; 回声“
”; } ?>
手动打开网站时得到的XML格式如下所示,或检查原始网站:


不
571.45
0.32
585.59
(2) {[“ErrorMessage”]=>对象(SimpleXMLElement)#2(0){}
[“ForecastGraphItems”]=>对象(SimpleXMLElement)#3(1){
[“WindForecastingGraphItem”]=>数组(481){[0]=>
object(simplexmlement)#4(5){[“Bid”]=>string(2)“No”
[“预测”]=>字符串(6)“571.45”[“负荷系数”]=>字符串(4)“0.32”
[“RunningAverage”]=>string(6)“585.59”[“Time”]=>
对象(SimpleXMLElement)#485(0){}[1]=>
object(simplexmlement)#5(5){[“Bid”]=>string(2)“No”
[“预测”]=>string(6)“562.95”[“负荷系数”]=>string(4)“0.32”
[“RunningAverage”]=>string(6)“578.47”[“Time”]=>
对象(simplexmlement)#485(0){}


正如michi已经评论的那样,您希望访问位于不同命名空间中的元素:


2015-05-12T22:15:00Z
120
元素为其所有子元素设置XML名称空间
的前缀
a
http://schemas.datacontract.org/2004/07/System
。您对两个前缀为的孩子感兴趣:

2015-05-12T22:15:00Z
120
您可以通过告诉您感兴趣的子元素的名称空间来实现此目的,例如,对于第一个元素:

$type ->Time->children('http://schemas.datacontract.org/2004/07/System')->DateTime;
已经是这样了

现在纠正一些误解:

  • 这不是一个数组
  • 是的,
    var\u dump
    告诉你这是一个,但事实并非如此
  • var\u dump
    print\u r
    对于simplexmlement并不是特别有用,因为它们都在撒谎。
    simplexmlement::asXML()
    始终向您展示具体的XML

这是因为
中的名称空间
a
,事实上这就是解决方案!您好@dwindey1:作为一个新用户,请在这里快速查看接受答案的工作原理(Stackoverflow投票系统的一部分):
$type ->Time->children('http://schemas.datacontract.org/2004/07/System')->DateTime;