2015-12-15 153 views
0

獲得xml文件的數據從來就試圖讓數據從使用SimpleXML從來就一個XML文件中遇到的一些問題understandig或只是一個結在我的大腦;-(麻煩使用SimpleXML

首先, XML文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
<data> 
<sensor1> 
    <name>Hallentemp Kuehlhaus</name> 
    <value_float>20.50</value_float> 
    <value_int>2050</value_int> 
    <value_string>20.50</value_string> 
    <min_abs_float>15.75</min_abs_float> 
    <max_abs_float>41.56</max_abs_float> 
    <min_day_float>19.87</min_day_float> 
    <max_day_float>20.56</max_day_float> 
    <unit>°C</unit> 
    <value_display>20.50 °C</value_display> 
</sensor1> 
<sensor2> 
    <name>Geräte LED</name> 
    <value_float>0.00</value_float> 
    <value_int>0</value_int> 
    <value_string>0.00</value_string> 
    <value_display>0.00</value_display> 
</sensor2> 
<sensor101> 
    <name>Temp Kuehlhaus</name> 
    <value_float>6.00</value_float> 
    <value_int>600</value_int> 
    <value_string>6.00</value_string> 
    <min_abs_float>3.81</min_abs_float> 
    <max_abs_float>252.93</max_abs_float> 
    <min_day_float>5.43</min_day_float> 
    <max_day_float>8.81</max_day_float> 
    <unit>°C</unit> 
    <value_display>6.00 °C</value_display> 
</sensor101> 
<sensor104> 
    <name>std</name> 
    <value_float>11.00</value_float> 
    <value_int>1100</value_int> 
    <value_string>11.00</value_string> 
    <min_abs_float>0.00</min_abs_float> 
    <max_abs_float>23.00</max_abs_float> 
    <min_day_float>0.00</min_day_float> 
    <max_day_float>11.00</max_day_float> 
    <unit>h</unit> 
    <value_display>11.00 h</value_display> 
</sensor104> 
<system> 
    <date>14.12.2015</date> 
    <time>11:04:43</time> 
    <devicename>ALL3418V2</devicename> 
    <devicetype>ALL3418</devicetype> 
    <sys>254163</sys> 
</system> 
</data> 

而且我的PHP代碼片段:

<?php 
$datei = "http://192.168.10.14/xml/sensordata.xml"; 

#$datei = "sensordata.xml"; 

    $Response = @simplexml_load_file($datei) or 
    die ("Fehler beim Laden der Datei: ".$datei."\n"); 

var_dump($Response); //for Debugging purposes 

foreach ($Response) { 
      echo $sensor.$sensordata; 
     } 


    #echo "<br>\n"; 
    #} 
    ?> 

而現在我的意圖背後:

我想回顯/打印(以及將來將它寫入到mysql db)兩個傳感器(sensor1/sensor101)的值以及一些系統信息(系統),如時間/日期。也許獲得day_min和day_max值會很有趣。但是這在第一次沒有必要。 我試過幾件東西來循環節點,但沒有工作。 也許你可以幫忙嗎?

+0

'的foreach($響應爲$傳感器=> $ sensorData)'和結果應該出現 – Rabea

回答

0

$ResponseSimpleXMLElement類型,您可以使用foreach進行循環。

在foreach,您可以檢查$key如果是「傳感器1」或「傳感器2」等。 在foreach的$value是類型的SimpleXMLElement也。您可以訪問它的名稱屬性,例如像這樣:

$value->name 

我認爲你可以做這樣的:

<?php 
$datei = "http://192.168.10.14/xml/sensordata.xml"; 

$Response = @simplexml_load_file($datei) or 
die ("Fehler beim Laden der Datei: ".$datei."\n"); 

foreach ($Response as $key => $value) { 
    if ($key === "sensor1") { 
     echo $value->name; 
     // etc ... 
    } 
} 
?> 
+0

哦,謝謝。這工作正好。結是開放的。 – Dave75

+0

@ Dave75 不錯!如果此答案幫助您解決問題,則始終可以考慮將答案標記爲已接受。 –