XML Zugriff auf Antwort mit genau einer einzigen Variable

Hallo Zusammen,

was XML Zugriff angeht bin ich absoluter Neuling und bräuchte mal eure Hilfe.
Ich möchte auf einige Variablen eines andren im Netzwerk befindlichen Systems zugreifen was mir z.B. über Firefox mit folgender URL gelingt:

http://192.168.16.189:8081/ISPWebService/IspDabWs.svc/readFloat?machineCode=VAR4&accessCode=FoliDickDuIW

Firefox gibt dann folgendes aus:

<?xml version="1.0"?>

624.2

wenn ich nun in IPS folgendes Skript ausführe

<?
$header[] = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3";
 $header[] = "Content-Type: text/xml; charset=utf-8";
 $header[] = "Connection: keep-alive";
 $ch = curl_init("http://192.168.16.189:8081/ISPWebService/IspDabWs.svc/readFloat?machineCode=VAR4&accessCode=FoliDickDuIW");
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $output = curl_exec($ch);
 
 curl_close($ch);
 
// $xml = simplexml_load_string(utf8_encode($output)) or die("Unable to load XML file!");

echo $output;

?>

Erscheint mir als Sciptausgabe einzig und allein der Wert 624.2. Den kann ich aber in keine Variable schreiben (ist allerdings das Ziel des Ganzen)

Wenn ich nun die Checkbox „HTML filtern“ bei der Textausgabe abwähle sehe ich das
<float xmlns=„http://schemas.microsoft.com/2003/10/Serialization/“>624.2</float>
ausgegeben wird.
Wir kann ich das am scnellsten und saubersten filtern und in eine Variable schreiben? Das soll später mit ca. 100 Variablen gleichzeitig geschehen.

Beste Grüße,
Thomas

Vielleicht hilft dir das weiter:

$context  = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
$url = 'http://192.168.16.189:8081/ISPWebService/IspDabWs.svc/readFloat?machineCode=VAR4&accessCode=FoliDickDuIW';
$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);
print_r($xml);

Doku dazu: PHP: simplexml_load_string - Manual

Damit erhältst du ein Objekt und kannst auf die einzelnen Werte zugreifen.

Grüße,
Kai

Dank KaiS!

jetzt gibt ein

echo $xml; 

nur noch den Wert aus! wie gewollt also.

lässt sich aber allerdings via

SetValue(20504 /*[W&H Extruder\W&H MK 1107\MK 1107\Leistung in kg/h]*/,$xml);

nicht in eine Variable schreiben sondern gibt immer den Fehler:


Warning: Cannot auto-convert value for parameter VariableValue in /var/lib/symcon/scripts/18629.ips.php on line 10

aus.

habe es auch mal mit

SetValue(20504 /*[W&H Extruder\W&H MK 1107\MK 1107\Leistung in kg/h]*/,$xml[0]);

probiert. allerdings das gleiche Ergebnis erhalten…

Ich weiß ich stell mich an… sry:banghead:

Versuch es mal mit floatval().
Also:

floatval($variable);

Grüße,
Kai

leider das gleiche Ergebnis…
Interessant ist noch dass wenn ich

print_r($xml);

eingebe

als Antwort folgendes kommt:

SimpleXMLElement Object
(
    [0] => 623.8
)

Sonst noch eine Idee?

Was ist die Variable 20504 für ein Typ?
Hast du wirklich folgendes versucht?

SetValue(20504 /*[W&H Extruder\W&H MK 1107\MK 1107\Leistung in kg/h]*/,floatval($xml[0]));

Grüße,
Kai

Nein hatte

floatval($xml); 

probiert… :confused:
jetzt funktioniert es!! vielen Dank für die ultra schnelle Hilfe!