2010-11-29 9 views
1

Je suis nouveau à XML et ont jusqu'à présent réussi à obtenir le nœud racine d'un XML en utilisant ce en php ...sélectionnez premier nœud enfant du nœud racine dans un fichier XML en utilisant php

function xmlRootNode($xmlfile){ 
    $xml = simplexml_load_string(file_get_contents($xmlfile)); 
    $xml = $xml->getName(); 
    echo $xml; 
} 

Et Je veux maintenant faire est d'utiliser ce nœud racine pour trouver le nom de son nœud enfant. Par exemple, un fichier avec ci-dessous afficherait 'food' comme racine en utilisant la fonction ci-dessus. Comment est-ce que j'utiliserais maintenant cela pour renvoyer son nom d'enfant «fruit»?

<food> 
    <fruit> 
    <type>apples</type> 
    </fruit> 
</food> 

En fin de compte ce que je suis en train de faire est de trouver le nom du nœud enfant du nœud racine afin que je puisse l'utiliser dans une autre fonction qui compte combien nombre. J'ai fait des recherches sur google et je me suis amusé avec des idées différentes, mais je pense qu'il me manque un processus simple quelque part pour que des idées soient appréciées.

Répondre

3

Essayez

/* get list of fruits under food */ 
$fruits = $xml->children(); 

/* or treat the $xml as array */ 
foreach ($xml as $fruit) 
{ 
    /* your processing */ 
} 

supplémentaires, le dessous est redondant,

$xml = simplexml_load_string(file_get_contents($xmlfile)); 

interrupteur à

$xml = simplexml_load_file($xmlfile); 
+0

merci, je me demandais s'il y avait une fonction pour cela. – Taylor

+0

le $ xml-> children() est à venir avec une erreur de non-objet. J'ai essayé de le convertir en objet mais j'ai toujours des erreurs – Taylor

+0

hmmm ... essayez ceci '$ fruits = $ xml-> children(); foreach ($ fruits comme $ fruit) {...} ' – ajreal

1
// The following code block illustrates how you can get at the name of each child 
$columnCDValues = array(); 
foreach ($simpleXMLElement->profile->children() as $child) 
{ 
    $name = $child->getName(); 
    $value = $simpleXMLElement->profile->$name;   
    $columnCDValues[$child->getName()] = $value; 
}