Désolé si cela semble être une question facile, mais j'ai commencé à arracher les cheveux à ce sujet ...
J'ai un fichier XML qui ressemble à ceci ...
<VAR VarNum="90">
<option>1</option>
</VAR>
J'essaye d'obtenir le VarNum.
Jusqu'à présent, j'ai réussi à utiliser le code suivant pour obtenir les autres informations:
$xml=simplexml_load_file($file);
$option=$xml->option;
Je ne peux tout simplement pas obtenir VarNum (la valeur d'attribut je pense?)
Merci!
Vous devriez pouvoir obtenir ceci en utilisant SimpleXMLElement :: attributes ()
Essaye ça:
$xml=simplexml_load_file($file);
foreach($xml->Var[0]->attributes() as $a => $b) {
echo $a,'="',$b,"\"\n";
}
Cela vous montrera tous les attributs de nom/valeur pour le premier élément foo
. C'est un tableau associatif, vous pouvez donc le faire également:
$attr = $xml->Var[0]->attributes();
echo $attr['VarNum'];
Qu'en est-il de l'utilisation de $xml['VarNum']
?
Comme ça :
$str = <<<XML
<VAR VarNum="90">
<option>1</option>
</VAR>
XML;
$xml=simplexml_load_string($str);
$option=$xml->option;
var_dump((string)$xml['VarNum']);
(J'ai utilisé simplexml_load_string
parce que j'ai collé votre XML dans une chaîne, au lieu de créer un fichier; ce que vous faites avec simplexml_load_file
va bien, dans votre cas!)
Vous obtiendrez
string '90' (length=2)
Avec simpleXML, vous accédez aux attributs avec une syntaxe de tableau.
Et vous devez transtyper en une chaîne pour obtenir la valeur, et non et l'instance de SimpleXMLElement
Par exemple, voir l'exemple # 5 de tilisation de base dans le manuel :-)
[0] => Array
(
[@attributes] => Array
(
[uri] => https://abcd.com:1234/abc/cst/2/
[id] => 2
)
[name] => Array
(
[first] => abcd
[last] => efg
)
[company] => abc SOLUTION
[email] => [email protected]
[homepage] => WWW.abcxyz.COM
[phone_numbers] => Array
(
[phone_number] => Array
(
[0] => Array
(
[main] => true
[type] => work
[list_order] => 1
[number] => +919876543210
)
[1] => Array
(
[main] => false
[type] => mobile
[list_order] => 2
[number] => +919876543210
)
)
)
[photo] => Array
(
[@attributes] => Array
(
[uri] => https://abcd.com:1234/abc/cst/2/cust_photo/
)
)
)
J'ai appliqué le code ci-dessous
$xml = simplexml_load_string($response);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
print_r($array);
mais il n'est pas utilisé à fond je veux toutes les données dans un seul tableau en php