simplexmlelement simplexml_load_string simplexml_load_file namespace leer factura con complejo php xml simplexml

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