php - simplexml_load_file - simplexml_load_string
¿Cómo obtener el valor de un atributo de un archivo XML en PHP? (3)
¿Qué hay de usar $xml[''VarNum'']
?
Me gusta esto :
$str = <<<XML
<VAR VarNum="90">
<option>1</option>
</VAR>
XML;
$xml=simplexml_load_string($str);
$option=$xml->option;
var_dump((string)$xml[''VarNum'']);
(He usado simplexml_load_string
porque he pegado tu XML en una cadena, en lugar de crear un archivo; lo que estás haciendo con simplexml_load_file
está bien, en tu caso)
Te tendre
string ''90'' (length=2)
Con simpleXML, puede acceder a los atributos con una sintaxis de matriz.
Y tiene que convertir a una cadena para obtener el valor, y no una instancia de SimpleXMLElement
Por ejemplo, vea el ejemplo # 5 de uso básico en el manual :-)
Lo siento si esto parece una pregunta fácil, pero he empezado a quitarle el pelo ...
Tengo un archivo XML que se parece a esto ...
<VAR VarNum="90">
<option>1</option>
</VAR>
Estoy tratando de obtener el VarNum .
Hasta ahora he tenido éxito usando el siguiente código para obtener la otra información:
$xml=simplexml_load_file($file);
$option=$xml->option;
Simplemente no puedo obtener VarNum (¿el valor del atributo creo?)
¡Gracias!
Deberías poder obtener esto utilizando SimpleXMLElement::attributes()
Prueba esto:
$xml=simplexml_load_file($file);
foreach($xml->Var[0]->attributes() as $a => $b) {
echo $a,''="'',$b,"/"/n";
}
Eso le mostrará todos los atributos de nombre / valor para el primer elemento foo
. Es una matriz asociativa, por lo que puede hacer esto también:
$attr = $xml->Var[0]->attributes();
echo $attr[''VarNum''];
[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/
)
)
)
Apliqué el siguiente código
$xml = simplexml_load_string($response);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
print_r($array);
pero no es uso completo quiero todos los datos en una sola matriz en PHP