
Por favor no me respondas por mensaje privado para que los demás aprendan...
Tu duda es ¿Cómo recorrer todos los conceptos de tu XML?
necesitas usar un bucle para cada concepto y otro bucle para cada atributo:
Código PHP:
Ver original<?php
// TU ARCHIVO XML
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<direccion:ruta xmlns:direccion="http://www.w3.org/2001/XMLSchema-instance">
<direccion:Cliente nombre="PRUEBA PRUEBA PRUEBA" rfc="AAAA610917AAA">
<direccion:DomicilioFiscal codigoPostal="12300" localidad="CIUDAD DE MEXICO" noExterior="54" estado="DISTRITO FEDERAL" pais="MEXICO" municipio="MILPA ALTA" colonia="SAN SALVADOR CUAUHTENCO" calle="CEDROS"/>
</direccion:Cliente>
<direccion:Conceptos>
<direccion:Concepto importe="4990.00" valorUnitario="4990.00" cantidad="1" descripcion="BLACKBERRY STORM" unidad="pz" noIdentificacion="BB9550"/>
<direccion:Concepto importe="1300.00" valorUnitario="1300.00" cantidad="1" descripcion="MONITOR 17 PULGADAS" unidad="pz" noIdentificacion="MT17"/>
</direccion:Conceptos>
</direccion:ruta>
XML;
Código PHP:
Ver original$doc = new DOMDocument();
$doc->loadXML($xml);
$conceptos = $doc->getElementsByTagNameNS($doc->lookupNamespaceUri('direccion'), 'Concepto');
echo '<h3>Conceptos</h3>';
for ($i=0; $i<$conceptos->length; $i++) {
foreach ($conceptos->item($i)->attributes as $atributo) {
echo $atributo->name . ' ' . $atributo->nodeValue . '<br />';
}
echo '<hr />';
}
tenías mal definido el
namespace
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
definiste el namespace
xsi y estás usando el namespace
direccion lo cambie en el ejemplo. Espero que ya entiendas mejor el tema. Saludos