2013-05-17 70 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/。我爲您的具體情況更新了答案。 –