使用简单 xml 获取 xml 文件数据的麻烦
trouble to get data of xml file using simplexml
当我尝试使用 simplexml 从 XML 文件中获取数据时,我遇到了一些理解问题或者只是我脑子里的一个结 ;-(
首先是 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";
#}
?>
现在我的意图是:
我想echo/print(并在将来将其写入mysql db)两个传感器(sensor1/sensor101)的值和一些系统信息(系统),如time/date。获取 day_min 和 day_max 值可能会很有趣。但这首先不是必需的。
我尝试了几种循环节点的方法,但 None 有效。
也许你能帮忙?
$Response
是 SimpleXMLElement 类型,您可以使用 foreach
.
循环
在foreach中,你可以检查$key
是"sensor1"还是"sensor2"等等。
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 ...
}
}
?>
当我尝试使用 simplexml 从 XML 文件中获取数据时,我遇到了一些理解问题或者只是我脑子里的一个结 ;-(
首先是 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";
#}
?>
现在我的意图是:
我想echo/print(并在将来将其写入mysql db)两个传感器(sensor1/sensor101)的值和一些系统信息(系统),如time/date。获取 day_min 和 day_max 值可能会很有趣。但这首先不是必需的。 我尝试了几种循环节点的方法,但 None 有效。 也许你能帮忙?
$Response
是 SimpleXMLElement 类型,您可以使用 foreach
.
在foreach中,你可以检查$key
是"sensor1"还是"sensor2"等等。
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 ...
}
}
?>