2009-12-16 3 views
0

J'ai quelques xml, laisse dire <names number="12"></names>php question simple élément xml/bug

Quand je lance ce qui suit:

$simpleXMLElement = new SimpleXMLElement($xml); 
pr($simpleXMLElement); 

Je reçois le texte suivant:

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [number] => 12 
     ) 

    [0] => 

) 

Il lancers francs cette entrée 0. C'est bizarre. Je ne sais pas ce que c'est censé représenter. Si je fais ceci:

<names number="12"><name first="oliver" /></names> 

Je reçois la sortie suivante:

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [number] => 12 
     ) 

    [name] => SimpleXMLElement Object 
     (
      [@attributes] => Array 
       (
        [first] => oliver 
       ) 

     ) 

) 

Ceci est comme prévu (pour moi au moins). Des pensées/direction?

Répondre

0

Première: si vous ne formatez pas correctement votre article, le code XML ne sera pas affiché. Indenter tout code avec au moins 4 espaces.

En second lieu, ne vous attendez pas print_r() ou var_dump() pour vous donner une représentation exacte d'un SimpleXMLElement parce que SimpleXML utilise beaucoup de magie, afin que les enfants et les attributs montreront pas nécessairement dans la sortie.

0

Il semble que SimpleXML fasse un travail rapide et fastidieux d'analyse de l'élément: Comme vous avez <names></names>, il ajoute un tableau dans l'élément, en y attendant des éléments, et lorsqu'il ne trouve aucun éléments à l'intérieur des balises names, il laisse un tableau vide, avec la clé 0, car il ne sait pas quel nom lui donner.

Une étiquette courte (<names />) ne doit pas générer le contenu vide. (Aussi étrange que cela puisse paraître.)