This question already has an answer here:
- SimpleXML: Selecting Elements Which Have A Certain Attribute Value 2 answers
I'm new to php and coding in general. I'm trying to parse xml from a remote device and access specific value data. I would like to display group 9 probe 1 value for example and I cannot get it to work. Any tips?
Here is the xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <Device id="S10011" hb="1935">
<Group id="1" />
<Group id="2" />
<Group id="3" />
<Group id="4" />
<Group id="5" />
<Group id="6" />
<Group id="7" />
<Group id="8" />
- <Group id="9">
- <Probe id="99">
<Value>1.0</Value>
</Probe>
- <Probe id="1">
<Value>86.4</Value>
</Probe>
- <Probe id="2">
<Value>45.7</Value>
</Probe>
- <Probe id="3">
<Value>2.9</Value>
</Probe>
- <Probe id="4">
<Value>1.0</Value>
</Probe>
</Group>
</Device>
Here is my php code to read in the xml:
<?php
// Establish a port 80 connection
$http = fsockopen("192.168.2.106",80);
// Send a request to the server
$req = "GET /xmldata HTTP/1.0\r\n";
$req .= "Host: 192.168.2.106\r\n";
$req .= "Connection: Close\r\n\r\n";
fputs($http, $req);
// Output the request results
while(!feof($http)) {
$xmlstr .= fgets($http, 2048);
}
// Close the connection
fclose($http);
$xml = simplexml_load_string($xmlstr);
print_r($xml);
$myValue = $xml->xpath('//Group[@ID="9"]/Probe[@ID="1"]/value');
echo $myValue;
?>
A print_r($xml); shows the following info:
SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => S10011
[hb] => 158221
)
[Group] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 1
)
[0] =>
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 2
)
[0] =>
)
[2] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 3
)
[0] =>
)
[3] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 4
)
[0] =>
)
[4] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 5
)
[0] =>
)
[5] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 6
)
[0] =>
)
[6] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 7
)
[0] =>
)
[7] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 8
)
[0] =>
)
[8] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 9
)
[Probe] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 99
)
[Value] => 2.0
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 1
)
[Value] => 89.6
)
[2] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 2
)
[Value] => 42.7
)
[3] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 3
)
[Value] => 3.9
)
[4] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 4
)
[Value] => 1.0
)
)
)
)
)