使用simplexml获取xml文件数据的麻烦

时间:2015-12-15 13:58:36

标签: php simplexml

因为我曾尝试使用simplexml从XML文件中获取数据,但是我遇到了一些理解问题,或者只是我脑中的结点; - (

首先是XML文件:

:=Calculate(Max([Employee sales]),all([Month]))

我的php片段:

<?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>

现在我的意图背后了:

我想回显/打印(并在将来将其写入mysql db)两个传感器(sensor1 / sensor101)的值和一些系统信息(系统),如时间/日期。也许获得day_min和day_max值会很有趣。但这不是第一个必要的。 我尝试了几个循环节点,但没有工作。 也许你可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

$Response类型为SimpleXMLElement,您可以使用foreach循环播放。

在foreach中,您可以查看$key是否为&#34; sensor1&#34;或&#34; sensor2&#34;等等.. 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 ...
    }
}
?>