Foros del Web » Programando para Internet » PHP »

Leer XML con varios nodos

Estas en el tema de Leer XML con varios nodos en el foro de PHP en Foros del Web. Hola, tengo este XML que tiene esta estructura y quiero leer desde php cual seria la mejor forma? Código HTML: <metadata> <data> <data1 type= "red" ...
  #1 (permalink)  
Antiguo 16/12/2019, 14:31
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 18 años
Puntos: 2
Leer XML con varios nodos

Hola, tengo este XML que tiene esta estructura y quiero leer desde php cual seria la mejor forma?

Código HTML:
<metadata>
<data>
   <data1 type="red" id="1" name="redone">
        <data2 apps="standard" name="Genere" value="00DF">
        </data2>
   </data1>
</data>
</metadata> 
Con la tipica estructura no he tenido problemas pero con esta en especial no me ha resultado la consulta.

Saludos
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #2 (permalink)  
Antiguo 16/12/2019, 20:21
 
Fecha de Ingreso: abril-2006
Mensajes: 336
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Leer XML con varios nodos

usa las funciones nativas de php para tratar XML, si solo necesitas Leer usa SIMPLEXML

en la web oficial ay mas ejemplos

https://www.php.net/manual/en/functi...-load-file.php

Código PHP:
Ver original
  1. <?php
  2. $xml = '<?xml version="1.0" encoding="UTF-8" ?>
  3. <rss>
  4.    <channel>
  5.        <item>
  6.            <title><![CDATA[Tom & Jerry]]></title>
  7.        </item>
  8.    </channel>
  9. </rss>';
  10.  
  11. $xml = simplexml_load_string($xml);
  12.  
  13. // echo does the casting for you
  14. echo $xml->channel->item->title;
  15.  
  16. // but vardump (or print_r) not!
  17. var_dump($xml->channel->item->title);
  18.  
  19. // so cast the SimpleXML Element to 'string' solve this issue
  20. var_dump((string) $xml->channel->item->title);
  21. ?>
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 17/12/2019, 07:44
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 18 años
Puntos: 2
Respuesta: Leer XML con varios nodos

Estoy mas que claro pero este tipo de nodo no puedo lograr leerlo
<App_Data App="DVR" Name="Store_ID" Value="000SD" />

Ejemplo quiero extraer el dato Name o App, aun no logro dar con el codigo.
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #4 (permalink)  
Antiguo 17/12/2019, 22:10
 
Fecha de Ingreso: abril-2006
Mensajes: 336
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Leer XML con varios nodos

Cita:
Iniciado por dobled Ver Mensaje
Estoy mas que claro pero este tipo de nodo no puedo lograr leerlo
<App_Data App="DVR" Name="Store_ID" Value="000SD" />

Ejemplo quiero extraer el dato Name o App, aun no logro dar con el codigo.
si leyeras la pagina web oficial del enlace que te mande, verias que se puede

Código PHP:
<?php
echo "<pre>";

$xml '<rss>
    <channel>
        <item>
            <title><![CDATA[Tom & Jerry]]></title>
            <App_Data App="DVR" Name="Store_ID" Value="000SD" />
        </item>
    </channel>
</rss>'
;
 
$xml simplexml_load_string($xml);
 
// echo does the casting for you
echo $xml->channel->item->title;
 
// but vardump (or print_r) not!
var_dump($xml->channel->item->title);
 
// so cast the SimpleXML Element to 'string' solve this issue
var_dump((string) $xml->channel->item->title);

var_dump((string) $xml->channel->item->App_Data['App']);
var_dump((string) $xml->channel->item->App_Data['Name']);
var_dump((string) $xml->channel->item->App_Data['Value']);

echo 
"</pre>";
y como resultado te devuelve

Código text:
Ver original
  1. Tom & Jerryobject(SimpleXMLElement)#4 (1) {
  2.   [0]=>
  3.   object(SimpleXMLElement)#3 (0) {
  4.   }
  5. }
  6. string(11) "Tom & Jerry"
  7. string(3) "DVR"
  8. string(8) "Store_ID"
  9. string(5) "000SD"
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9



La zona horaria es GMT -6. Ahora son las 07:21.