2013-05-17 72 views
0

我尝试从XML文件获取数据。数据是这样的:从XML文件获取数据

<MeasuringPoints> 
<MeasuringPoint ID="Base" LastChange="2013-05-17T09:29:59.293" WeatherCondition="8"> 
    <Name LngID="IT">Name 1</Name> 
    <Name LngID="DE">Name 2</Name> 
    <Name LngID="EN>Name 3</Name> 
</MeasuringPoint> 
<MeasuringPoint ID="Middle" LastChange="2012-08-01T11:47:33.160" WeatherCondition="14"> 
    <Name LngID="IT">Name 1a</Name> 
    <Name LngID="DE">Name 2a</Name> 
    <Name LngID="EN">Name 3a</Name> 
</MeasuringPoint> 
<MeasuringPoint ID="Top" LastChange="2013-05-17T09:29:59.293" WeatherCondition="8"> 
    <Name LngID="DE">Name 1b</Name> 
    <Name LngID="IT">Name 2b</Name> 
    <Name LngID="EN">Name 3b</Name> 
</MeasuringPoint> 
</MeasuringPoints> 

我也有这个PHP代码:

foreach ($xml->Area as $area) 
{  
    $MEASURING_POINTS = $area->MeasuringPoints->MeasuringPoint['ID']; 
    $MEASURING_LAST_CHANGE = $area->MeasuringPoints->MeasuringPoint['LastChange']; 

    echo $MEASURING_POINTS; 
    echo " - "; 
    echo $MEASURING_LAST_CHANGE; 
} 

的代码工作,但仅适用于第一MeasuringPoint(在Base ID)。

如何从其他MeasuringPointMiddleTop ID)获取数据?

感谢您的帮助!

阿德里安

+0

你为什么不通过'MeasuringPoints'代替迭代? –

回答

0

您需要iteratore超过MeasuringPoint

试试这个:

foreach ($xml->Area as $area) 
{  
    foreach($area->MeasuringPoints->MeasuringPoint as $point) { 
     $MEASURING_POINT = $point['ID']; 
     $MEASURING_LAST_CHANGE = $point['LastChange']; 

     echo $MEASURING_POINT; 
     echo " - "; 
     echo $MEASURING_LAST_CHANGE; 
    } 
} 

只得到第三MeasuringPoint试试这个:

foreach ($xml->Area as $area) 
{  
    $point = $area->xpath("/MeasuringPoints/MeasuringPoint[@ID='Top']") 
    $MEASURING_POINT = $point['ID']; 
    $MEASURING_LAST_CHANGE = $point['LastChange']; 

    echo $MEASURING_POINT; 
    echo " - "; 
    echo $MEASURING_LAST_CHANGE; 
} 
+0

你有权!现在工作完美! – Adrian

+0

我还有一个问题 - 是否可以从MeasurePoint ID =“Top”部分获取数据? – Adrian

+0

当然,但在这种情况下,您必须使用X-Path。有关该方法,请参阅http://php.net/manual/en/simplexmlelement.xpath.php,有关简短介绍,请参阅http://www.w3schools.com/xpath/。我为您的具体情况更新了答案。 –