12
votes

Simppexml obtenir une valeur de nœud

dire que j'ai cette structure XML suivante: xxx

J'ai fait une variable du XML et je veux maintenant obtenir les valeurs de l'enfant1, alors j'utilise simplexml: < Pré> xxx

mais je reçois ce message: Avis: essayer d'obtenir une propriété de non-objet dans /x.php sur la ligne x

Je l'ai également essayé avec $ xml-> Parent-> Child1, mais pas de succès.

Quelqu'un ??


2 commentaires

soupir Cela doit être l'une des erreurs les plus fréquentes de tous les temps. Lorsque vous chargez un document XML dans un simplexmlellement, le nœud racine est le SimplexMlelement, par ex. $ xml =

.


Merci pour l'explication Gordon.


3 Réponses :


28
votes
$xml = new SimpleXMLElement($xml);
$this->xmlcode = (string) $xml->parent[0]->child1;

1 commentaires

Problème résolu pour moi en ajoutant de type (chaîne) de (flotteur) par exemple.



2
votes

Un bon exemple d'utilisation de XPath avec PHP pour le simplexmlelement peut être trouvé ici http://www.php.net/manual/fr/class.Simplexmellement .php # 95229

// Find the topmost element of the domDocument
$xpath = new DOMXPath($xml);
$child1 = $xpath->evaluate('/main/parent/child1')->item(0); 


1 commentaires

SimplexML peut faire des requêtes XPath. Il n'est pas nécessaire de convertir en DOM pour le faire. Le seul avantage de l'utilisation d'évaluations est lorsque vous obtenez des résultats dactylographiés, que votre exemple ne fait clairement pas.



0
votes

variante pour xpath strong> (également comment obtenir du contenu du nœud ayant des tirets de noms):

$xml = simplexml_load_string($content);
$node_value= (string)$xml->xpath('parent/child-1')[0];


0 commentaires