2013-09-30 2 views
0

Comment puis-je obtenir le résultat entier à partir de XML en utilisant simplexml_load_string?Obtention d'une valeur entière à partir de XML

Mon XML ressemble à ceci

<xml> 
    <code> 
     <codedesc>Code Name</codedesc> 
     100 
    </code> 
    <code> 
     <codedesc>Code Name 2</codedesc> 
     200 
    </code> 
</xml> 

Quand je charge avec PHP en utilisant ce code

$XML = simplexml_load_string($data); 
print_r($XML); 

Je ne reçois que codedesc et non le numéro de code que vous pouvez voir ici

https://eval.in/51562

+0

Vous devriez probablement terminerons ce numéro dans sa propre balise XML afin qu'il puisse être facilement identifié. – Jeemusu

+0

La valeur numérique doit également être incluse dans les balises XML. Ensuite, vous pouvez l'obtenir. https://eval.in/51568 –

Répondre

2

Vous devez placer vos valeurs en XML afin qu'elles puissent être accessibles sed.

<xml> 
    <code> 
     <codedesc>Code Name</codedesc> 
     <value>100</value> 
    </code> 
    <code> 
     <codedesc>Code Name 2</codedesc> 
     <value>200</value> 
    </code> 
</xml> 

Vous pouvez y accéder comme ceci:

$xml = simplexml_load_string($data); 

echo $xml->code[0]->value;  //100 
echo $xml->code[1]->value;  //200 
echo $xml->code[1]->codedesc; //Code Name 2 

Si vous ne pouvez pas changer votre xml, ce qui suit devrait fonctionner:

echo $xml->code[0];   //100 
echo $xml->code[1];   //200 
+0

Je n'ai aucun contrôle sur la sortie XML. Je suppose que je peux envelopper les valeurs en utilisant regex, mais j'espérais quelque chose qui ne nécessite pas de bricoler avec le XML lui-même. –

+0

Dans ce cas, avec votre configuration en cours faisant 'echo $ xml-> code [0]; 'devrait fonctionner. – Jeemusu

+0

Cela a fonctionné, merci. –

0

Je ne sais pas ce que vous essayez d'obtenir SimpleXML analyse correctement votre chaîne XML, et retourne une classe avec un tableau appelé 'code', qui a 2 objets appelés codedesc:

SimpleXMLElement Object 
(
    [code] => Array 
     (
      [0] => SimpleXMLElement Object 
       (
        [codedesc] => Code Name 
       ) 

      [1] => SimpleXMLElement Object 
       (
        [codedesc] => Code Name 2 
       ) 

     ) 

) 

Si vous essayez d'accéder aux valeurs (100, 200), essayez de les placer dans des éléments XML.

Si vous essayez d'imprimer le XML entier, essayez print_r($XML->asXML()) (voir this)

+0

Oui, j'essaie d'obtenir les valeurs 100 et 200. –

Questions connexes