Zugriff auf simpleXML Objekt(e)

fUnKuCh3n

Erfahrenes Mitglied
Moin,

habe mir folgende Funktion gebaut:
PHP:
    $clientvar01    =   "http://$bmsIP:$httpMOCPort/httpMoc/httpMoc.asmx/SetClientVariable?dnsname=$hostname&category=Garantiedaten&name=Garantie bis&val=$datum&loginid=$loginid";
    $clientvar01    =   simplexml_load_file($clientvar01);

Als Rückgabe kommt via
PHP:
var_dump($clientvar01);

Code:
object(SimpleXMLElement)#7 (2) { ["@attributes"]=> array(3) { ["status"]=> string(7) "200 OK " ["timestamp"]=> string(19) "2011-05-24T09:39:42" ["timeused"]=> string(3) "0ms" } ["comment"]=> object(SimpleXMLElement)#9 (0) { } }

Nun will ich eigentlich nur den Inhalt des Status in eine neue Variable haben, leider scheitere ich da etwas dran...

Kann mir wer auf die Sprünge helfen?
Danke!
 
Wie fast immer. Das ganze Zeug mal Formatiernen und schon hat man die Lösung
Code:
object(SimpleXMLElement)#7 (2) {
	["@attributes"]=> array(3) { 
		["status"]=> string(7) "200 OK " 
		["timestamp"]=> string(19) "2011-05-24T09:39:42" 
		["timeused"]=> string(3) "0ms" 
	}
	["comment"]=> object(SimpleXMLElement)#9 (0) { } 
}
Also, die oberste Instant ist ein Objekt. Darin gibts die Eigenschaft '@attributes'. Die ist ein Array. status ist ein Key dieses Arrays
Das währe eigentlich so
PHP:
$status = $clientvar01->@attributes['status'];
Nun, das @ will PHP da aber wahrscheinlich nicht haben. ALso kannst du alle Egenschaften des Objektes in ein Array umwnadeln und dann so zugreiffen.
PHP:
$properties = get_object_vars($clientvar01);
$status = $properties['@attributes']['status'];

Nachtrag. Das ist ja ein SimpleXMLElement-Object. Da kannst du das Attribut auch über die integrierte Funktion auslesen
PHP:
$attributes = $clientvar01->attributes()
$status = $attributes['status'];
 
geht sogar noch kürzer. simpleXML überschreibt den array operator intern, so dass du direkt $clientvar01['status'] machen kannst.
 
Zurück