189 votes

Obtenir la valeur d'un objet SimpleXMLElement

J'ai quelque chose comme ça :

$url = "http://ws.geonames.org/findNearbyPostalCodes?country=pl&placename=";
$url .= rawurlencode($city[$i]);

$xml = simplexml_load_file($url);
echo $url."\n";
$cityCode[] = array(
    'city' => $city[$i], 
    'lat' => $xml->code[0]->lat, 
    'lng' => $xml->code[0]->lng
);

C'est censé télécharger le XML de Geonames. Si je le fais print_r($xml) Je reçois :

SimpleXMLElement Object
(
    [code] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [postalcode] => 01-935
                    [name] => Warszawa
                    [countryCode] => PL
                    [lat] => 52.25
                    [lng] => 21.0
                    [adminCode1] => SimpleXMLElement Object
                        (
                        )

                    [adminName1] => Mazowieckie
                    [adminCode2] => SimpleXMLElement Object
                        (
                        )

                    [adminName2] => Warszawa
                    [adminCode3] => SimpleXMLElement Object
                        (
                        )

                    [adminName3] => SimpleXMLElement Object
                        (
                        )

                    [distance] => 0.0
                )

Je le fais comme vous pouvez le voir $xml->code[0]->lat et il renvoie un objet. Comment puis-je obtenir la valeur ?

414voto

Luis Melgratti Points 6297

Vous devez convertir l'objet simpleXML en une chaîne de caractères.

$value = (string) $xml->code[0]->lat;

87voto

sglessard Points 1060

Vous pouvez également utiliser la méthode magique __toString()

$xml->code[0]->lat->__toString()

16voto

CoursesWeb Points 1679

Si vous savez que la valeur de l'élément XML est un nombre à virgule flottante (latitude, longitude, distance), vous pouvez utiliser la méthode suivante (float)

$value = (float) $xml->code[0]->lat;

Aussi, (int) pour les nombres entiers :

$value = (int) $xml->code[0]->distance;

13voto

vladkras Points 2064

Si vous Ne le fais pas. connaître la valeur de l'élément XML, vous pouvez utiliser

$value = (string) $xml->code[0]->lat;

if (ctype_digit($value)) {
    // the value is probably an integer because consists only of digits
}

Cela fonctionne lorsque vous devez déterminer si la valeur est un nombre, car (string) retournera toujours une chaîne de caractères et is_int($value) renvoie à false

0voto

Şahin Solmaz Points 11
header("Content-Type: text/html; charset=utf8");
$url  = simplexml_load_file("http://URI.com");

 foreach ($url->PRODUCT as $product) {  
    foreach($urun->attributes() as $k => $v) {
        echo $k." : ".$v.' <br />';
    }
    echo '<hr/>';
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X