使用 simplexml 解析 PHP 字段值

Parse PHP using simplexml for field values

正在尝试解析以下内容xml:

<?xml version="1.0"?>
<devices>
<device name="TEMP" index="0" available="1" type="" id="xxx">
<field type="2" max="50" min="-20" niceName="Temperature (C)" value="24.75" key="TempC"/>
<field type="2" max="122" min="-4" niceName="Temperature (F)" value="76.55" key="TempF"/>

并拉出 TempF 值 76.55。

这是我尝试的代码,但我没有做错什么:

$xml = simplexml_load_file('c:\data.xml') or die("Error: Cannot create object");
echo '<h2>Server Temperature</h2>';
$list = $xml->devices;
for ($i = 0; $i < count($list); $i++) {
    echo 'Temp: ' .$list[$i]->TempF[value] . '<br>';

您可以循环 $devices->device 而不是使用 for 循环

echo '<h2>Server Temperature</h2>';
foreach ($xml->device as $device) {
    foreach ($device->field as $field) {
        $att = $field->attributes();
        if ((string)$att->key === "TempF") {
            echo 'Temp: ' . $field->attributes()->value . "<br>";
        }
    }
}

输出

<h2>Server Temperature</h2>Temp: 76.55<br>

看到一个Php demo

或者如果你想循环所有字段的值,你可以使用xpath:

echo '<h2>Server Temperature</h2>';
foreach ($xml->xpath('/devices/device/field[@key="TempF"]/@value') as $value) {
    echo 'Temp: ' . $value . "<br>";
}

输出

<h2>Server Temperature</h2>Temp: 76.55<br>

再看一个Php demo