2010-09-23 11 views
2

J'essaie de lire une valeur d'attribut du nœud racine d'un XML introduit dans la méthode simplexml_load_string() en PHP.PHP - Analyse de l'objet XML créé par simplexml_load_string()

est un exemple ici,

<data status="Active"> 
<user> <userid> 1 </userid> </user> 
<user> <userid> 2 </userid> </user> 
<data> 

Je suis en train de lire la valeur de « statut » dans la chaîne XML ci-dessus:

echo $xml->user[0]->userid; 
echo $xml->attributes()->status 

Les déclarations ne fonctionnent pas aussi, var_dump() sorties "NUL".

Répondre

4

echo (string)$userNode->attributes()->status devrait fonctionner

+0

La distribution explicite est-elle nécessaire avec 'echo' ou est-ce simplement" good style "? – Tomalak

+0

@Tomalak - dans les implémentations de simplexml que j'ai manipulées, j'ai dû le faire explicitement ou essayer d'échouer la référence de l'objet. Peut-être que dans les implémentations les plus récentes, vous n'avez pas à le faire puisque la méthode toString le fait automatiquement? –

0
$xml = simplexml_load_string('<user status="Active"></user>'); 

echo $xml->attributes()->status; 
2

Outre la méthode attributes() vous pouvez simplement accéder aux attributs de l'élément en traitant l'objet élément comme un tableau (SimpleXMLElement implémente ArrayAccess)

$xml = simplexml_load_string('<user status="Active"></user>'); 
echo 'status=', $xml['status']; 

Mais les attributs d'accès à d'autres espaces de noms que vous devez utiliser attributes() (afaik).

0

Merci pour les réponses ... L'analyse n'était pas vraiment le problème.

I Missed les paramètres suivants cURL,

curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"); 

je traitais une valeur booléenne (réponse cURL) sous forme de fichier XML :)

Merci à tous ...

0

Désolé, mais dans votre exemple XML vous n'avez pas fermé votre balise <data>.