Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/03/2010, 14:07
ZSerch
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años, 1 mes
Puntos: 0
Curioso caso con DOM

Hola amigos, es mi primer post en este foro.

Os cuento mi caso a ver si alguien encuentra una solución:

Tengo un fichero XML con infinifad de productos, cada uno con su nombre, descripcion, precio y demas campos. No todos los productos tienen todos los campos, y la extructura del xml no contiene todos los nodos hijos de cada producto, es decir, en vez de respetar la extructura y hacer todos los nodos "product" con los mismos nodos hijo lo que me han pasado es un xml con muchos nodos "product" pero no son iguales en su extructura, algunos carecen de algun nodo hijo.

Para mostralos correctamente he escrito este código:

Código PHP:
$productos $docxml->getElementsByTagName('product');
foreach(
$productos as $producto) {
    
$nodos $producto->childNodes;
    for(
$i=0;$i $nodos->length;$i++) {
        
$nombreNodo $nodos->item($i)->nodeName;
        
$valor $nodos->item($i)->nodeValue;
        switch(
$nombreNodo) {
        case 
"name":
            echo 
"<b>Nombre: </b>$valor<br>";
            break;
        case 
"description":
            echo 
"<b>Descripcion: </b>$valor<br>";
            break;
        default:
            echo 
"";
        }
    }

Lo curioso es que tal cual lo veis no funciona, solo funciona si en el bloque "default" pongo esto:
Código PHP:
...
default:
    echo 
"$nombreNodo<br>"
no le veo sentido, ¿alguna sugerencia? muchas gracias!!