Retroceder   Foros del Web > Programación para sitios web > XML

Respuesta
 
Herramientas Desplegado
Antiguo 14-may-2008, 04:07   #1 (permalink)
PosProdukcion está en el buen camino
 
Avatar de PosProdukcion
 
Fecha de Ingreso: noviembre-2004
Mensajes: 482
Parpadear XMLDOM: Pasar a hermanos saltando los hijos

Hola, estoy recorriendo un fichero XML con Microsoft.XMLDOM, y quiero saber si es posible tener subnodos que se llamen igual que los padres y poder recorrerlas jerárquicamente, a ver si me puedo explicar:

Tengo un XML que define menus con entradas y submenus:

Código:
<entradas>
   <entrada tipo="enlace">
         <texto>Entrada 1</texto>
   </entrada>
   <entrada tipo="submenu">
         <texto>Entrada 2</texto>
         <entrada tipo="enlace">
               <texto>Entrada 2.1</texto>
         </entrada>
         <entrada tipo="enlace">
               <texto>Entrada 2.2</texto>
         </entrada>
   </entrada>
   <entrada tipo="enlace">
         <texto>Entrada 3</texto>
   </entrada>
</entradas>
Entonces, cuando llego a la entrada de tipo="submenu", se que puedo recorrer los hijos de forma recursiva con el nodo "Entrada 2", pero lo que no se como hacer es luego seguir con "Entrada 3"... Intento hacer nextSibling para el padre (puesto en rojo en el código de abajo), pero me dice que el objeto no acepta esa propiedad o método, entonces ¿como paso al hermano saltando los hijos??

Mi estructura de programa (resumida) es la siguiente:

Código:
Function EscribeUnaEntradaDeXML(UnaEntrada, nivel)
   esSubmenu = false
   %>
    <li>texto de la entrada
   <%
   If tipo = "submenu"
          esSubmenu = true
          okey = EscribeEntradasDeXML(nodoEntrada, nivel+1)
  End If
   %>
    </li>
   <%
  EscribeUnaEntradaDeXML = esSubmenu 
End Function

Sub EscribeEntradasDeXML(nodoEntradas, nivel)
            For each UnaEntrada in nodoEntradas.getElementsByTagName("entrada")
                If EscribeUnaEntradaDeXML(UnaEntrada, nivel) Then
                    SI TRUE SIGNIFICA QUE LO ANTERIOR ERA SUBMENU,
                     QUIERO SALTAR AL SIGUIENTE HERMANO SIN PASAR POR LOS HIJOS
                    UnaEntrada = UnaEntrada.nextSibling
                End If
            Next
End Sub

Y la llamada incial es:

Call EscribeEntradasDeXML(objXMLInicial, 0)
Espero que podáis ayudarme, soy novato en XML. Por cierto, estoy usando esta definición de objetos para Microsoft.XMLDOM:

http://www.devguru.com/technologies/..._document.html
http://www.devguru.com/technologies/.../obj_node.html

Gracias
PosProdukcion está desconectado   Responder Citando
Respuesta
Calificación: Calificación de Tema: 1 votos, 1,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 09:22.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93