Simplexml_load_string($string) retourne un objet vide, mais $string contient xml? le code ci-dessous
- Je récupérer des informations en utilisant cURL au format xml.
....
$xml = curl_exec($ch);
$data = simplexml_load_string($xml);
print_r($data);
//out put - SimpleXMLElement Object ( )
si j'essaie - print_r($xml);
et afficher la source de la page
Je reçois
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns7:users xmlns="http://www.example.com/xml/ns/rs"
xmlns:ns2="http://www.example.com/xml/ns/users"
xmlns:ns3="http://www.example.com/2004/11/tHistory"
xmlns:ns4="http://www.example.com/fsi/tHistory"
xmlns:ns5="http://www.example.com/2005/10/tHistory"
xmlns:ns6="http://www.example.com/2010/03/cs"
xmlns:ns7="http://www.example.com/2005/10/users"
xmlns:ns8="http://www.example.com/2010/03/tHistory">
<ns7:user><ns7:id>Matt.Smith</ns7:id>
<ns7:lastName>Smith</ns7:lastName>
<ns7:firstName>Matt</ns7:firstName>
<ns7:otherName></ns7:otherName>
<ns7:gender>male</ns7:gender>
<ns7:email>[email protected]</ns7:email>
<ns7:locale>en</ns7:locale>
<ns7:role><ns7:id>A</ns7:id>
<ns7:name>System Administrator</ns7:name></ns7:role>
<ns7:employeeNumber></ns7:employeeNumber>
<ns7:organization>
<ns7:id>8000</ns7:id>
<ns7:name>Organisation Title</ns7:name>
</ns7:organization>
<ns7:organization>
<ns7:id>20707</ns7:id>
<ns7:name>London Office</ns7:name>
</ns7:organization>
<ns7:attribute>
<ns7:code>0</ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code>0</ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description></ns7:attribute>
<ns7:attribute><ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
</ns7:user>
</ns7:users>
ce xml est tous dans une ligne et j'ai entré manuellement les sauts de ligne pour le rendre lisible.
OriginalL'auteur user187580 | 2010-07-02
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR: pour imprimer le prénom (ou tout autre), vous pouvez utiliser l'habitude de SimpleXML aborder les mécanismes de. votre cas est un peu plus compliqué parce que vous utilisez les espaces de noms. encore utilisable si - essayer quelque chose de comme ceci:
re: je suis dans l'attente d'
print_r($data)
impression comme si c'était un tableau [...]: cette attente est faux. il serait sûrement utile, mais ce n'est pas la façon dont il fonctionne. pour imprimer un objet SimpleXML xml de représentation de chaîne, utilisezasXML()
.MISE À JOUR DE FIN
qu'attendez-vous
print_r($data)
à l'impression?SimpleXMLElement Object ( )
semble parfaitement valable de sortie pour moi. cela ne signifie pas qu'il ya quelque chose de mal avec le xml. si vous voulez voir le code xml de votre SimpleXMLElement Objet, essayezprint $data->asXML()
.Iam expecing à print_r($data) à imprimer, comme si c'était un tableau .. 'prenom' => valeur prénom etc. C'est en travaillant sur ok pour moi, mais peut-être quelques modifications sur la source de données xml rendu à ce vide.
voir ma réponse mis à jour.
Il peut être compréhensible que
print_r()
sur un objet résultats dans un "vide", qui n'est pas ce qui est annoncé dans le documentation PHP pour cette fonction. Dans Exemple #1: Interpréter une chaîne de caractères XML, il montre de l'objet résultant de l'exemple XML imprimé comme une matrice.Je voudrais étendre cette question pour mes données xml, est-il possible? J'ai appliqué ax. 's réponse, mais il ne fonctionne pas, mais je dois éviter de faire la même question. Voici mes données : postimg.org/image/ekln9c4vh et je veux obtenir le nom de l'entreprise, j'ai essayé: $data->enfants('xs', true)->element[0]->nom de la SOCIÉTÉ, mais il falses.
OriginalL'auteur ax.
Bien, ce n'est pas un objet vide. En effet, si vous print_r il montre ce que vous nous avez montré. Mais si vous, par exemple, ne
le résultat sera correct:
Suffit d'utiliser l'objet simpleXML est signifié 🙂
Pour vérifier si il est chargé correctement, voir la doc:
à page
Eh bien, comme dans AXs réponse 🙂
OriginalL'auteur Tomasz Struczyński
Ou à var dump supprimer la ns7 namespacing de nœuds, de les laisser sur la racine:
Comme c'est un objet, vous pouvez utiliser l'objet standard de référencement: $data->user->prenom
OriginalL'auteur Ashley
Oui j'ai eu le même problème et il pense que le simplexml_load_string était de retour à vide depuis le print_r ($data) ou echo $data tout juste de retour à vide.
mais si vous n' $data->nom, puis vous obtenez une des données valides ..ça un peu bizarre, mais que la façon dont il fonctionne .. donc bon conseil.. merci.. il a travaillé pour moi
OriginalL'auteur mayavi