Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2007
cartmanrules cartmanrules is offline
Miembro
 
Registrado: may 2004
Posts: 16
Poder: 0
cartmanrules Va por buen camino
Question Como "parsear" un fichero HTML con Delphi

Hola!

Estoy dándole vueltas a la cabeza sobre cómo solucionar este problemilla de una forma elegante y rápida:

- Tengo un fichero con una lista de precios, que viene en formato de tabla de HTML, por ejemplo:

Código:
<table><tr><td>MONITOR TFT 17" GEN</td><td>105.45</td><td>99</td></tr><tr><td>MONITOR TFT 17" LG 1716</td><td>125.65</td><td>20</td></tr></table>
Es sólo un ejemplo para que os hagáis una idea, pero como véis viene como si fuera una tabla de HTML, y no hay retornos de carro para delimitar las líneas, por lo que habrá que ir leyendo y discriminando. Tengo que meter todos sus campos en una base de datos, ¿qué funciones podría utilizar para leer el fichero e ir discriminando lo que son delimitadores (<table>, <td>, <tr> etc) y lo que son datos?

Muchas gracias!
Responder Con Cita
  #2  
Antiguo 26-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Si no quieres complicarte... una simple búsqueda en Torry's te ofrece no pocos componentes y/o "html parser".

Y si quieres complicarte... tal vez pudieras empezar por estudiar el código de alguno de ellos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 27-09-2007
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Si el formato es siempre igual y tal como lo has indicado,
no vale la pena añadir un componente mas solo para eso, con
unas pocas instrucciones en delphi se puede hacer, en realidad se
puede hacer de varias formas una de ellas seria la siguiente:

Código:
// Para probar y ver el resultado en pantalla se puede usar un TMemo de
// prueba, por ejemplo:  ExtractData(Str,Memo1.Lines);

procedure ExtractData(Str:string; List:TStrings);
begin
 Str:= StringReplace(Str, '<table><tr><td>'    , ''    , [rfReplaceAll]);
 Str:= StringReplace(Str, '</td></tr></table>' , ''    , [rfReplaceAll]);
 Str:= StringReplace(Str, '</tr>'              , ''    , [rfReplaceAll]);
 Str:= StringReplace(Str, '</td>'              , ''    , [rfReplaceAll]);
 Str:= StringReplace(Str, '<tr>'               , #13#10, [rfReplaceAll]);
 Str:= StringReplace(Str, '<td>'               , #13#10, [rfReplaceAll]);
 List.Text:= Str;
end;

Saludos
Responder Con Cita
  #4  
Antiguo 28-09-2007
cartmanrules cartmanrules is offline
Miembro
 
Registrado: may 2004
Posts: 16
Poder: 0
cartmanrules Va por buen camino
Muchas gracias por la idea, la verdad es que es una forma rápida y sencilla de conseguirlo

Saludos!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Fichero "Del1.MB" al ejecutar aplicación jsc Tablas planas 7 16-08-2007 21:28:07
Como hacer que se vea "Si" en vez de "TRUE" en un DBGrid lu9eui C++ Builder 2 07-08-2007 04:03:13
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53
Ventana MDI, "Siempre visible" y "Pantalla completa" ixMike API de Windows 7 11-04-2007 18:36:55


La franja horaria es GMT +2. Ahora son las 05:46:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi