Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/11/2018, 17:56
Avatar de adryan310
adryan310
 
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Recorrer nodos de un xml con php DOM

Saludos gente del foro, tengo el siguiente codigo que me funciona a la perfeccion para lo que yo quiero:
Código PHP:
<?php

   $xml 
file_get_contents("facturas/tmp/00100001010000006754_A.xml");
   
$DOM = new DOMDocument('1.0','utf-8');
   
   
$DOM->loadXML($xml);

   
$factura_xml $DOM->getElementsByTagName('FacturaElectronica');

   foreach(
$factura_xml as $factura){
      
$idElem $factura->getElementsByTagName('Emisor');
      
$nombre $factura->getElementsByTagName('NombreComercial')->item(0)->nodeValue;
       
      foreach(
$idElem as $hijo){
         
$ced $hijo->getElementsByTagName('Identificacion');
          
          foreach(
$ced as $cedulita){
              
$cedul $cedulita->getElementsByTagName('Numero')->item(0)->nodeValue;
          }
      }
   }
    echo 
$nombre." / ".$cedul;

?>
Lo que hago con el es sacar el nombre y la identificacion del emisor de este xml
Código XML:
Ver original
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FacturaElectronica xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica" xsi:schemaLocation="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  3.   <Clave>50601111800310106021400100001010000006754100616887</Clave>
  4.   <NumeroConsecutivo>00100001010000006754</NumeroConsecutivo>
  5.   <FechaEmision>2018-11-01T00:00:00</FechaEmision>
  6.   <Emisor>
  7.     <Nombre>Grupo El Electrico S.A.</Nombre>
  8.     <Identificacion>
  9.       <Tipo>02</Tipo>
  10.       <Numero>3101060214</Numero>
  11.     </Identificacion>
  12.     <NombreComercial>Grupo El Electrico S.A.</NombreComercial>
  13.     <Ubicacion>
  14.       <Provincia>1</Provincia>
  15.       <Canton>01</Canton>
  16.       <Distrito>06</Distrito>
  17.       <Barrio>16</Barrio>
  18.       <OtrasSenas>San Jose,San Jose,San Francisco,Los Sauces</OtrasSenas>
  19.     </Ubicacion>
  20.     <Telefono>
  21.       <CodigoPais>506</CodigoPais>
  22.       <NumTelefono>40551755</NumTelefono>
  23.     </Telefono>
  24.     <Fax>
  25.       <CodigoPais>506</CodigoPais>
  26.       <NumTelefono>26657676</NumTelefono>
  27.     </Fax>
  28.     <CorreoElectronico>[email protected]</CorreoElectronico>
  29.   </Emisor>
  30. </FacturaElectronica>

Como dije antes el codigo me funciona, sin embargo lo que busco es mejorar ese codigo, quizas hacerlo mas corto o mas optimizado, por eso les pregunto a ustedes para que me den sus respectivas mejoras y las explicaciones de ellas.

gracias