PHP XML解析,多个';指数';问题

PHP XML解析,多个';指数';问题,php,xml,xpath,Php,Xml,Xpath,我正在使用php foreach循环解析下面的数据,我需要从measuredValue索引2和索引3中提取数据,但是我不确定如何做到这一点。下面的代码显示了我用来从XML文件中提取数据的方法。我必须了解“索引1”中的气温工作,但我不知道如何进入下一个“索引”部分 foreach ($weather_array->payloadPublication->siteMeasurements as $roaddt){ echo (" <tr>

我正在使用php foreach循环解析下面的数据,我需要从measuredValue索引2和索引3中提取数据,但是我不确定如何做到这一点。下面的代码显示了我用来从XML文件中提取数据的方法。我必须了解“索引1”中的气温工作,但我不知道如何进入下一个“索引”部分

foreach ($weather_array->payloadPublication->siteMeasurements as $roaddt){

    echo ("
        <tr>
            <td> " .$roaddt->measurementSiteReference. "</td>
            <td> " .$roaddt->measurementTimeDefault. "</td>
            <td> " .$roaddt->measuredValue->basicDataValue->temperature->airTemperature. "</td>
            <td> " .$roaddt->measuredValue->basicDataValue->wind->windDirectionCompass. "</td>
        </tr> ");
}
echo "</table>";
foreach($weather\u array->payloadPublication->sitemasurementas$roaddt){
回声(“
“$roaddt->measurementSiteReference。”
“$roaddt->MEASUREMENTIMEDEFAULT。”
“$roaddt->测量值->基本值->温度->空气温度。”
“$roaddt->测量值->基本CDATA值->风->风向指南针。”
");
}
回声“;
下面的代码是我试图从中提取的部分代码:

<siteMeasurements>
    <measurementSiteReference>NRA10810</measurementSiteReference>
    <measurementTimeDefault>2017-02-28T15:50:00+00:00</measurementTimeDefault>
    <measuredValue index="1">
    <basicDataValue xsi:type="TemperatureInformation">
    <period>3600</period>
    <temperature>...</temperature>
    </basicDataValue>
    </measuredValue>
    <measuredValue index="2">
    <basicDataValue xsi:type="PrecipitationInformation">
    <period>3600</period>
    <precipitationDetail></precipitationDetail>
    </basicDataValue>
    </measuredValue>
    <measuredValue index="3">
    <basicDataValue xsi:type="WindInformation">
    <period>3600</period>
    <wind>
    <maximumWindSpeed>45</maximumWindSpeed>
    <windDirectionBearing>302</windDirectionBearing>
    <windDirectionCompass>westNorthWest</windDirectionCompass>
    <windSpeed>27.4</windSpeed>
    </wind>
    </basicDataValue>
    </measuredValue>

NRA10810
2017-02-28:15:50:00+00:00
3600
...
3600
3600
45
302
西北偏西
27.4

您只循环
站点测量
,但每个
站点测量
都有多个
测量值

因此,在现有循环中,您需要在
measuredValue
上添加另一个循环。诸如此类:

foreach ($weather_array->payloadPublication->siteMeasurements as $roaddt){
     echo ("
        <tr>
            <td> " .$roaddt->measurementSiteReference. "</td>
            <td> " .$roaddt->measurementTimeDefault. "</td>");
    foreach ($roaddt->measuredValue as $mValue){
     echo ("<td> " .$mValue->basicDataValue. "</td>");               
    }
    echo ("</tr>");
}   
foreach($weather\u array->payloadPublication->sitemasurementas$roaddt){
回声(“
“$roaddt->measurementSiteReference。”
“$roaddt->MEASUREMENTIMEDEFAULT.”;
foreach($roaddt->measuredValue为$mValue){
echo(“$mValue->basicDataValue.”);
}
回声(“”);
}   
如何读取XML(即,
$weather\u array
如何分配)?