Foros del Web » Programando para Internet » PHP »

Problema al leer XML con PHP

Estas en el tema de Problema al leer XML con PHP en el foro de PHP en Foros del Web. Hola a Todos, tengo un inconveniente al leer un archivo xml, posee mas o menos la siguiente estructura: <?xml version="1.0"?> <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:Body> <nm:MaterialByElementsResponse_sync xmlns:nm="http://sap.com/xi/SAPGlobal20/Global" ...
  #1 (permalink)  
Antiguo 06/11/2012, 15:28
 
Fecha de Ingreso: noviembre-2012
Mensajes: 26
Antigüedad: 7 años
Puntos: 1
Problema al leer XML con PHP

Hola a Todos, tengo un inconveniente al leer un archivo xml, posee mas o menos la siguiente estructura:

<?xml version="1.0"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<nm:MaterialByElementsResponse_sync xmlns:nm="http://sap.com/xi/SAPGlobal20/Global" xmlns:prx="urn:sap.com:proxy:HL5:/1SAI/TAEB97FCAB3B0F0502AFAA6:804">
<materials>
<codigo>001</codigo>
<articulo>Microondas</articulo>
</materials>
</nm:MaterialByElementsResponse_sync>
</soap-env:Body>
</soap-env:Envelope>

bueno como veran hay etiquetas con namespaces y etiquetas normales (que es donde se ecuentra la información que necesito); averiguando en este foro encontre un código que me permite obtener esa informacion pero solo me funciona si las etiquetas codigo y articulo poseen tambien namespaces. Aqui les paso el código:

$XMLconvert=simplexml_load_file("archivo.xml");
$xml = $XMLconvert->getNamespaces(true);
$XMLconvert->registerXPathNamespace('c', $xml['soap-env']);
$title = $XMLconvert->xpath('//c:materials');
echo $title[0];

pero hasta ahora no he podido utilizarlo para que me muestre los datos que necesito. Apresiaria mucho su ayuda, Gracias. Saludos
  #2 (permalink)  
Antiguo 06/11/2012, 19:55
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 8 años, 3 meses
Puntos: 793
Respuesta: Problema al leer XML con PHP

Eso sería algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $sxe = new SimpleXMLElement($xml);
  4. $ns = $sxe->getNamespaces(true);
  5. $sxe->registerXPathNamespace('nm', $ns['nm']);
  6. $data = $sxe->xpath('//nm:MaterialByElementsResponse_sync');
  7.  
  8. echo $data[0]->materials->articulo; //Microondas

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 06/11/2012 a las 20:08 Razón: código que sobra
  #3 (permalink)  
Antiguo 07/11/2012, 06:47
 
Fecha de Ingreso: noviembre-2012
Mensajes: 26
Antigüedad: 7 años
Puntos: 1
Respuesta: Problema al leer XML con PHP

muchas gracias andresdzphp, Me sirvio mucho, saludos. Te la debo

Etiquetas: xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




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