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

Ordenar String con Tags Guias

Estas en el tema de Ordenar String con Tags Guias en el foro de ASP Clásico en Foros del Web. Necesito ordenas un string teniendo unos tag guia, ejemplo: <ID>id0675</ID> Parece xml pero no lo es es un string que me es devuelto de una ...
  #1 (permalink)  
Antiguo 16/11/2004, 14:03
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 22 años, 9 meses
Puntos: 15
Información Ordenar String con Tags Guias

Necesito ordenas un string teniendo unos tag guia, ejemplo:
<ID>id0675</ID>

Parece xml pero no lo es es un string que me es devuelto de una gente que da servicios de noticias, ellos me devuelven xml, pero dentro viene el string con esa estructura.

Yo capturo el string, pero quiero formatiar o crear una funcion que me permita decirle que tag es de inicio y cual es de final y que el contenido del centro lo saque y lo pueda imprimir solo o agregarle link o cambiarle el font o lo que sea que quiera hacer con el contenido.

Si alguien tiene una idea que me la diga, estoy tratando de hacer unos split para separar por medio de > ó < y hace cojer lo del centro y despues reemplazar <ID por "" espacio en blanco pero este proceso se vuelve lento a la hora de llamar la aplicacion y no me permite hacerlo tan preciso.

Espero respuesta y una idea, ya que en php es mas facil ahora no recuerdo la funcion pero lo hace dandole los tag de inicio y final y te da el contenido del medio, ejemplo decirle lo que se encuentra entre <td> y </td> y el muestra el medio, eso lo uso para formatiar info desde otros sitios, pero en asp no le encuentro la forma.

Si existe Una funcion para esto plz necesito que me ayuden.

Última edición por dwaks; 16/11/2004 a las 14:22
  #2 (permalink)  
Antiguo 16/11/2004, 14:29
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
No todo ya esta hecho, en ocaciones debemos de programar nuestras rutinas.

Código:
<%
Cadena = "<ID>id0675</ID>"

SubCadena = EnMedio(Cadena, "<ID>", "</ID>")
Response.write "Lo de enmedio: " & SubCadena

Function EnMedio(Cadena, TagIni, TagFin)
    PosIni = InStr(Cadena,TagIni)+Len(TagIni)
    PosFin = InStr(Cadena,TagFin)-Len(TagFin)
		Longitud = Len(Cadena)-(Len(TagIni)+Len(TagFin))
    EnMedio = MID(Cadena, PosIni,Longitud)
End Function
%>
  #3 (permalink)  
Antiguo 16/11/2004, 14:45
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 22 años, 9 meses
Puntos: 15
Información Me tira este error

Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument: 'MID'

/newsxml/process.asp, line 44
  #4 (permalink)  
Antiguo 16/11/2004, 14:50
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Haz de tener un error "de dedo", revisa el nombre de las variables. O Copia tal cual y pegalo para probarlo.
  #5 (permalink)  
Antiguo 16/11/2004, 14:52
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 22 años, 9 meses
Puntos: 15
Ya vi cual es el problema

Al parecer lo que me devuelve el xml hecho string viene con espacios vacios que yo creo puede ser asi "" pero a la hora de poner

if texto <> "" then
funcion aqui
end if

Esto lo hago para evitar que entre un string que vaya vacio y no tenga ningun tag que usar para sacarle el contenido.

El asunto es que pongo la sentencia de arriba como condicional que es y no detecta el espacio en blanco y lo deja pasar, no se si es u salto de linea o un espacio en blanco o un espcaio vacio ya que tengo todos esos puestos para no dejarlo pasar y lo deja pasar de todos modos.
  #6 (permalink)  
Antiguo 16/11/2004, 14:55
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Podrias checar lo longitud: IF LEN(TRIM(Cadena))>0 THEN .....
  #7 (permalink)  
Antiguo 16/11/2004, 15:12
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 22 años, 9 meses
Puntos: 15
Información Ya se donde es la cosa

ok el texto se me devuelve asi:
<IDPadre>
<IDHijo>
<IDnieto>pepe</IDnieto>
<IDnieto>pablo</IDnieto>
</IDHijo>
<IDHijo>
<IDnieto>Yeny</IDnieto>
<IDnieto>Lorena</IDnieto>
</IDHijo>
</IDPadre>

Como ves viene un padre, varios hijos y los nietos.
Lo que hago yo es un Split para <IDPadre> lo que me ubica un array asi:

texto = Split(nodes.txt,"<IDPadre>") 'nodes.txt es la variable que tiene el string

texto(1) tiene el contenido que finaliza con </IDPadre> y para quitar este tag hago lo mismo, otro split.

texto2 = Split(texto,"</IDPadre>")

Ahora estoy con el texto hijo ya que el padre lo quite y todo queda ubicado en:
texto2(0)

Ahora como tengo varios hijos lo que hago es hacer otro split y este si tendra muchos registro asi que hago el split asi:

text3 = split(texto2(0),"<IDHijo>")

For i = 0 to UBound(text3)
text4 = split(text3(i),"</IDHijo>")
texto4 = replace(text4(0)," ","")
'final = EnMedio(texto4, "<IDnieto>", "</IDnieto>")
if LEN(TRIM(texto4))>0 then
Response.Write(LEN(TRIM(texto4)) & "|" & texto4 & " - ")
end if
Next

Esto me tira un error grave y es que no tengo los tag <IDnieto>23</IDnieto> en una sola linea sino que es parte de 2 lineas y debo hacer no se quizas otro split interno que cree un array y que la guia sea el salto de linea.

Por eso estoy horita en eso a ver como le llego a la linea precisa y poder entonces hechar a correr tu funcion.

Última edición por dwaks; 16/11/2004 a las 15:14
  #8 (permalink)  
Antiguo 17/11/2004, 08:54
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
mmmmm, bueno, no veo mucho problema en parsear la cadena como pretendes, pero tal vez te sería más productivo para archivos futuros que investigaras sobre los métodos del objeto Microsoft.XMLDOM.

Saludos
  #9 (permalink)  
Antiguo 17/11/2004, 08:58
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
viejo..eso es xml por donde se le mire, ve y usa las funciones dom de microsoft y ya.
no te compliques la vida.
  #10 (permalink)  
Antiguo 18/11/2004, 04:27
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 2 meses
Puntos: 2
seeeee es XML desde aca hasta la china!
Parsealo con xml y a otra cosa... no se por que esquivas tanto el xml si en verdad te va a solucionar la vida!
__________________
tech-nico.com
  #11 (permalink)  
Antiguo 18/11/2004, 08:43
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 22 años, 9 meses
Puntos: 15
Información Saludos, jejeje No es XML

Los muy vivos de los creadores del sistema donde debo sacar las noticias devuelen XML pero el unico TAG XML valido es el principal que se llama <STRING>

Esto se identifica solo viendo que color trae la respuesta que en este caso seria azul y el contenido en negro bold.

El asunto es que me mate la cabeza Tratando de accesar a lo que yo creia era xml y no pasaba pase un dia en eso, asi que mande un email a los creadores y les dije:
1- Esos tag no son validos, ustedes me devuelven string lo cual dificultad el procesarlo, y pregunte si esa respuesta viene asi.
Me responde:
Sir el sistema es asi <string></string> estos tag son xml valido lo que este dentro de el no lo son ya que es un string, y si necesita ayuda con esto no dude en contactarnos.

Esa respuesta me puso ahora a cranear como hacer esto y de alli llegue a pedir una ayuda aqui.

Las estructura de la respuesta es asi:
<string> <--- este es el unico tag XML valido
<tagPadre>
<tagHijo>
<tagNieto></tagNieto>
<tagNieta></tagNieta>
</tagHijo>
<tagHijo>
<tagNieto></tagNieto>
<tagNieta></tagNieta>
</tagHijo>
</tagPadre>

</string>

Asi que veran que no es asunto de XMLDOM ya que por medio de el consigo llegarle al contenido que debere procesar.

Saludos.
  #12 (permalink)  
Antiguo 18/11/2004, 09:09
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
la verdad es que no te entiendo nada.

No se tampoco a que te refieres con eso de tag valido XML,
tampoco entieno por que dices que lo que pones como ejemplo NO es un xml cuando SI lo es.

Coloque el mismo codigo en un block de notas y lo grabe con extencion xml y el IE y parsea perfectamente.

osea ES UN XML .

alomejor seria bueno que pusieras un ejemplo real del copdigo que te enviaron, para checar que demonios esta pasando


saludos
  #13 (permalink)  
Antiguo 18/11/2004, 09:17
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 22 años, 9 meses
Puntos: 15
Información Mira este ejemplo

http://www.bestlinesports.com/LivelineObjxml.asp

Mira alli, veras que los TAG XML valido a los que uno puede accesar por medio del xmldom se ven en color chocolate, y dentro el texto en negrita color negro.

Bueno Alli uno puede accesar a los nodos validos que se ven como por ejemplo:
<event_datetimeGMT>2004-11-18 19:05</event_datetimeGMT>

EL codigo que me devuelve el sistema de noticias solamente sale en chocolate el tag <string></string> todo el enrredo que ves de padre, hijo, nieto sale en negrita, osea que no son tag validos o nodos, son texto y ellos me confirmaron.
  #14 (permalink)  
Antiguo 18/11/2004, 09:36
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
No es por discrepar, pero mira este ejemplo :

Copie tu "string" (puedes o no agregarle la primera línea):
Cita:
<?xml version='1.0' ?>
<IDPadre>
<IDHijo>
<IDnieto>pepe</IDnieto>
<IDnieto>pablo</IDnieto>
</IDHijo>
<IDHijo>
<IDnieto>Yeny</IDnieto>
<IDnieto>Lorena</IDnieto>
</IDHijo>
</IDPadre>
Luego hice este código, se lo corrí y listo. Veo el contenido de los TEXT_NODES.

Cita:
Set objDom = Server.CreateObject("Microsoft.XMLDOM")
If objDom.Load("C:\Inetpub\wwwroot\MisPruebas\borrame .xml") Then
for each x in objDom.documentElement.childNodes
response.write x.nodename & ": " & x.text & "<br>"
next
End If
En conclusión: SI ES XML.

Saludos

PD. Los nodos se ven negros......¿cual es el problema?

Última edición por Myakire; 18/11/2004 a las 09:42
  #15 (permalink)  
Antiguo 18/11/2004, 09:48
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 2 meses
Puntos: 2
amigo dwaks yo tampoco entiendo a donde queres llegar....
no se que definicion tendras sobre XML y sobre tags validos e invalidos... pero yo te puedo decir que eso que vos mostras... ES UN XML y ... "ES VALIDO".
El los tags que expusiste en el post... los probe al igual que Muzztein y no veo ninguna anormalidad. ESTO ES EN LA PRACTICA.

AHORA VAMOS A LA TEORIA:
hace un tiempo lei un par de capitulos de un libro de XML que hablaba justamente sobre tags validos e invalidos. El libro es de David Hunter. Por si queres verlo...
http://www.cuspide.com/detalle_libro.php/8495318687

no se!... tal vez no te estoy interpretando...
vos diras.
__________________
tech-nico.com

Última edición por OXIGENO; 18/11/2004 a las 09:51
  #16 (permalink)  
Antiguo 18/11/2004, 09:56
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 22 años, 9 meses
Puntos: 15
Información Lamento mucho que no entiendan

El agarrarlo y pegarlo en un archivo no es el asunto ya que asi me funciona ami.

El sistema de noticias no lo puedo mostrar o que lo vean ya que esta cerrado por user y password al momento de hacer el llamado por post y recuperado el xml.

Asi que el copy paste da solucion pero esa no es la via.

Ya estoy terminando, la primera etapa y funciona como quiero. Pero deben entender que cuando llamas a un asp que devuelve xml el muestra en pantallas cual es un tag xml valido y cual es su contenido, y alli se basa eso.

La funcion que me diste me funciona y la estoy usando gracias de todos modos, y veo que quizas no han trabajado con la estructura que digo yo ya que no es un xml local que estoy analizando y procesando sino una repuesta xml que te da un asp remoto que debes capturar con un asp local.

Gracias.
  #17 (permalink)  
Antiguo 18/11/2004, 09:56
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Todos los libros WROX, son excelentes , si te es posible, adquiérelo como te recomienda Oxigeno.

  #18 (permalink)  
Antiguo 19/11/2004, 09:54
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
no entiendo nada
  #19 (permalink)  
Antiguo 19/11/2004, 10:16
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
jajaja, nada muzztein, este post ya dió todo lo que tenía que dar.....

La moraleja del post fue: "Hazlo como quieras....el chiste es que funcione"
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 11:42.