Foros del Web » Programando para Internet » ASP Clásico »

Perdido en Microsoft.XMLDOM

Estas en el tema de Perdido en Microsoft.XMLDOM en el foro de ASP Clásico en Foros del Web. Hola gente, tengo un xml cuyo contenido expongo aqui: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código XML: Ver original <?xml version = "1.0" encoding = "utf-8" ?> <layout doctype ...
  #1 (permalink)  
Antiguo 17/05/2010, 19:24
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 17 años
Puntos: 54
Perdido en Microsoft.XMLDOM

Hola gente, tengo un xml cuyo contenido expongo aqui:

Código XML:
Ver original
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <layout doctype="strict" version="XHTML 1.0" encoding="utf-8" url="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3.   <head>
  4.   &lt;head&gt;
  5.     &lt;title&gt;...&lt;/title&gt;
  6.     &lt;link rel="stylesheet" type="text/css" href="Skins/Main.css"/&gt;
  7.     &lt;meta http-equiv="Content-Type" content="text/xml;charset=utf-8"/&gt;
  8.     &lt;meta name="description" content=""/&gt;
  9.     &lt;meta name="keywords" content=""/&gt;
  10.   &lt;/head&gt;
  11.   </head>
  12.   <header>
  13.   &lt;body&gt;
  14.     &lt;div id="wrapper"&gt;
  15.       &lt;div id="header"&gt;
  16.         &lt;div id="logo"&gt;
  17.         cabecera
  18.         &lt;/div&gt;
  19.         &lt;div id="menu"&gt;
  20.         &lt;/div&gt;
  21.       &lt;/div&gt;
  22.   </header>
  23.   <middle>
  24.     &lt;div id="middle"&gt;
  25.       &lt;div id="content"&gt;
  26.       medio
  27.       &lt;/div&gt;
  28.       &lt;div id="sidebar"&gt;
  29.       &lt;/div&gt;
  30.       &lt;/div&gt;
  31.   </middle>
  32.   <footer>
  33.     &lt;div id="footer"&gt;
  34.     &lt;/div&gt;
  35.   &lt;/body&gt;
  36.   </footer>
  37. </layout>

y dados mi pocos conocimientos del xml dom, no tengo mucha idea de como obtener el contenido de cada nodo e imprimirlo en el navegador, el objetivo es a base de ese xml imprimir html al cliente. Es decir un motor de plantillas. Gracias de antemano.

¿me podrian indicar qué pasos y objetos debo usar para hacer lo que quiero?
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"

Última edición por Julcar; 18/05/2010 a las 21:42
  #2 (permalink)  
Antiguo 18/05/2010, 15:35
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Perdido en Microsoft.XMLDOM

Hola

Podría ser algo como esto

Código ASP:
Ver original
  1. <&#37;
  2.    Dim xml, raiz
  3.    Set xml = Server.CreateObject("Microsoft.XMLDOM")
  4.    xml.async = False
  5.    xml.load(Server.MapPath("doc.xml"))
  6.    Set raiz = xml.documentElement
  7.  
  8. For i = 0 to (raiz.childNodes.length - 1)
  9. Set hijo = raiz.childNodes(i)
  10. if i = 0 Then
  11. Response.Write hijo.childNodes(0).Text
  12. else
  13. Response.Write hijo.childNodes(0).Text
  14. Response.Write hijo.childNodes(1).Text
  15. Response.Write hijo.childNodes(2).Text
  16. end if
  17. Next 'i
  18. %>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 18/05/2010, 16:15
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 17 años
Puntos: 54
Respuesta: Perdido en Microsoft.XMLDOM

Grande pibe

pero me da un error en la linea 13

Script error detected at line 13.
Source line: Response.Write hijo.childNodes(1).Text
Description: Se requiere un objeto: 'hijo.childNodes(...)'
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"
  #4 (permalink)  
Antiguo 18/05/2010, 16:18
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 17 años
Puntos: 54
Respuesta: Perdido en Microsoft.XMLDOM

En cambio en el servidor me da esto:

Microsoft VBScript runtime error '800a01a8'

Object required: '[object]'

/_____17_/julcar/Default.asp, line 14
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"
  #5 (permalink)  
Antiguo 18/05/2010, 21:40
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 17 años
Puntos: 54
Respuesta: Perdido en Microsoft.XMLDOM

Pues ahora surge otro problema, tengo el siguiente codigo ASP:

Código ASP:
Ver original
  1. <%
  2. Class XMLParser
  3.   Private sFile
  4.   Private oXML
  5.  
  6.   Public Property Get LoadXML(file)
  7.     sFile = file
  8.   End Property
  9.  
  10.   Private Sub Class_Initialize
  11.     Set oXML = Server.CreateObject("Microsoft.FreeThreadedXMLDOM")
  12.   End Sub
  13.  
  14.   Public Sub OpenXML()
  15.     oXML.Load(sFile)
  16.     oXML.Async = False
  17.   End Sub
  18.  
  19.   Public Function ReadNode(node)
  20.     Dim sNode, vNode, n
  21.  
  22.     Set sNode = oXML.SelectSingleNode(node)
  23.     for each n in sNode.childnodes
  24.       vNode = sNode.text
  25.     next
  26.     ReadNode = vNode
  27.   End Function
  28.  
  29. End Class
  30.  
  31. Class Layout
  32.   Private oParser
  33.  
  34.   Private Sub Class_Initialize()
  35.    Set oParser = New XMLParser
  36.    oParser.LoadXML (Server.MapPath("Layout/Main.xml"))
  37.    oParser.OpenXML
  38.   End Sub
  39.  
  40.   Public Sub SetHead()
  41.     Dim head
  42.    
  43.     head = oParser.ReadNode("layout/head")
  44.     Response.Write head
  45.   End Sub
  46.  
  47.   Public Sub SetHeader()
  48.     Dim header
  49.  
  50.     header = oParser.ReadNode("layout/header")
  51.     Response.Write header
  52.   End Sub
  53.  
  54.   Public Sub SetMiddle()
  55.     Dim middle
  56.  
  57.     header = oParser.ReadNode("layout/middle")
  58.     Response.Write middle
  59.   End Sub
  60.  
  61.   Public Sub SetFooter()
  62.     Dim footer
  63.  
  64.     header = oParser.ReadNode("layout/footer")
  65.     Response.Write footer
  66.   End Sub
  67.  
  68. End Class
  69. %>
  70.  
  71. <%
  72. Dim oLYT
  73.  
  74. Set oLYT = New Layout
  75. oLYT.SetDoctype
  76. oLYT.SetHead
  77. oLYT.SetHeader
  78. oLYT.SetMiddle
  79. oLYT.SetFooter
  80. %>

Pero cuando ejecuto el codigo solo me trae los nodos head y header, y necesito que tambien traiga a middle y footer, y por mas que intento no lo hace.

¿Que puede estar pasando?
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"
  #6 (permalink)  
Antiguo 19/05/2010, 05:31
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Perdido en Microsoft.XMLDOM

Hola

El problema está en que has editado tu primer post

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 19/05/2010, 08:23
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 17 años
Puntos: 54
Respuesta: Perdido en Microsoft.XMLDOM

Cita:
Iniciado por Adler Ver Mensaje
Hola

El problema está en que has editado tu primer post

Suerte
edité sí... pero mi problema está en el asp que publiqué en mi ultmimo post, usando el xml que esta en mi primer post solo me regresa los dos primeros nodos, esa es mi duda, deberia regresar todos 4, solo regresa los primeros dos.

SI puedes ayudarme en eso te estaré muy agradecido.
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"
  #8 (permalink)  
Antiguo 19/05/2010, 10:45
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Perdido en Microsoft.XMLDOM

Hola

¿Has jugado alguna vez a buscar a Wally?

Cita:
Public Sub SetMiddle()
Dim middle

header = oParser.ReadNode("layout/middle")
Response.Write middle
End Sub

Public Sub SetFooter()
Dim footer

header = oParser.ReadNode("layout/footer")
Response.Write footer
End Sub
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 19/05/2010, 12:51
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 17 años
Puntos: 54
Respuesta: Perdido en Microsoft.XMLDOM



Esas cosas pasan cuando haces copy/paste deliberadamente y sin una taza de expreso

Igual ya lo resovi unificando una funcion y pasandole el valor individualmente, gracias, eternamente

__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"
  #10 (permalink)  
Antiguo 20/05/2010, 04:12
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Perdido en Microsoft.XMLDOM

Cita:
Iniciado por Julcar Ver Mensaje


Esas cosas pasan cuando haces copy/paste deliberadamente y sin una taza de expreso

Igual ya lo resovi unificando una funcion y pasandole el valor individualmente, gracias, eternamente

No somos nadie sin un café bien cargado
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Etiquetas: Ninguno
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




La zona horaria es GMT -6. Ahora son las 12:22.