Manejo del Document Object Model de Internet Explorer con C#

07/06/2004 - 19:47 por Roberto | Informe spam
Hola:

¿Alguno de los miembros del grupo podría decirme si
existe algún medio de acceder al Document Object Model
que Internet Explorer construye a partir de un documento
html desde una aplicación en C#? Mi problema es que
necesito hacer un parser de html y he creído que acceder
al document Object Model es el mejor modo de hacerlo. He
revisado en la biblioteca de clases del .NET Framework
pero solo he encontrado soporte para xml.

Cualquier información o sugerencia sobre el tema la
agradeceré muchísimo pues la necesito con urgencia y mis
conocimientos del lenguaje C# y el .NET Framework aún son
algo escasos.

Saludos,

Roberto.

Preguntas similare

Leer las respuestas

#1 Jose Marcenaro
07/06/2004 - 23:09 | Informe spam
Hola Roberto

Para acceder al DOM del IE, el código debe estar ejecutandose en el mismo
lugar en que está el IE, es decir:

- en una aplicación ASPNET, el código debería correr del lado cliente (el
navegador). O sea que solamente podrias usar código javascript
- lo que sí podrías hacer es una aplicacion .NET de tipo WinForms que
contenga un control explorador (el ActiveX del IE) y entonces sí usarla para
cargar un HTML y recorrer su modelo de objetos... al cual accedes a traves
de la propiedad document del control.

No es una aplicación muy común, pero es una idea interesante.
Si lo haces, cuenta en este foro si has tenido exito

Otra forma de hacer -en código .NET- parsing de HTML sin usar el modelo de
objetos del IE, es utilizar una biblioteca de clases (de código abierto)
publicada por Chris Lovett en GotDotNet, tal vez te sirva darle una mirada:

http://www.gotdotnet.com/Community/...BD760564BC

Saludos
Jose Marcenaro

"Roberto" escribió en el mensaje
news:1969201c44cb7$72eae7a0$
Hola:

¿Alguno de los miembros del grupo podría decirme si
existe algún medio de acceder al Document Object Model
que Internet Explorer construye a partir de un documento
html desde una aplicación en C#? Mi problema es que
necesito hacer un parser de html y he creído que acceder
al document Object Model es el mejor modo de hacerlo. He
revisado en la biblioteca de clases del .NET Framework
pero solo he encontrado soporte para xml.

Cualquier información o sugerencia sobre el tema la
agradeceré muchísimo pues la necesito con urgencia y mis
conocimientos del lenguaje C# y el .NET Framework aún son
algo escasos.

Saludos,

Roberto.
#2 Roberto
08/06/2004 - 00:42 | Informe spam
Mostrar la cita
ejecutandose en el mismo
Mostrar la cita
lado cliente (el
Mostrar la cita
javascript
Mostrar la cita
WinForms que
Mostrar la cita
entonces sí usarla para
Mostrar la cita
cual accedes a traves
Mostrar la cita
interesante.
Mostrar la cita
usar el modelo de
Mostrar la cita
código abierto)
Mostrar la cita
sirva darle una mirada:
Mostrar la cita
px?SampleGuid¹0FDDCE-E60D-43F8-A5C4-C3BD760564BC
Mostrar la cita
en el mensaje
Mostrar la cita
Lo que intento hacer es justo lo que indicas, o sea
cargar el documento html con el ActiveX del IE y acceder
al DOM a través de la propiedad Document, pero dicha
propiedad me devuelve un puntero extraño al parecer de
tipo Object con el cual no sé qué hacer. Sospecho que
debo convertir este puntero a un tipo determinado para
obtener el DOM. A lo mejor lo que me falta es una
tontería pero no alcanzo a darme cuenta cuál es.

Le hecharé un vistazo a la biblioteca de clases que me
indicas para ver si me sirve.

Saludos y muchas gracias,

Roberto.
#3 Anonimo
08/06/2004 - 08:49 | Informe spam
Podría usted realizar aporte de código de cómo acceder y
manejar el ActiveX de IE ?.
Alguien conoce alguna referencia ?
#4 Jose Marcenaro
08/06/2004 - 23:55 | Informe spam
El control a utilizar es el axWebBrowser (puedes buscar en Google.com por
ese nombre)

Los pasos a seguir son los siguientes:

- Crear una aplicacion WinForms

- Agregar a la toolbox de VS.NET el elemento (de la Solapa COM) "Microsoft
Web Browser", que es precisamente el control axWebBrowser

- Arrastrar el control a un Form

- A las referencias del proyecto agregar (de la solapa NET) el assembly
Microsoft.mshtml para obtener los tipos de dato internos al documento

- Navegar a una página determinada mediante axWebBrowser1.Navigate; por
ejemplo:
object flags = null;
object targetFrameName = null;
object postData = null;
object headers = null;
axWebBrowser1.Navigate("localhost/fwkadm",ref flags, ref
targetFrameName, ref postData, ref headers);

- Luego de que la página se cargue (en el click de otro boton, por ejemplo),
puede accederse al modelo de objetos del IE de esta forma:
mshtml.HTMLDocument doc = (mshtml.HTMLDocument)axWebBrowser1.Document;
mshtml.IHTMLElementCollection coll = doc.all;
mshtml.HTMLSpanElementClass span1 = (mshtml.HTMLSpanElementClass)
coll.item("mark",null); // busca id="mark"
MessageBox.Show(span1.innerHTML);

Saludos
Jose Marcenaro

escribió en el mensaje
news:1959e01c44d24$af900830$
Podría usted realizar aporte de código de cómo acceder y
manejar el ActiveX de IE ?.
Alguien conoce alguna referencia ?
#5 Roberto
12/06/2004 - 09:05 | Informe spam
Hola Jose:

La solución que me has dado me ha salvado. ¡Muchísimas
gracias! Con esto
creo que ya podré iniciar mi desarrollo.

He probado también el parser que me sugeriste pero según
parece por el
código de ejemplo que lo acompaña está más orientado a
xml que a html así
que es poco probable que lo utilice.

Si tienes o sabes dónde encontrar información en español
sobre el assembly
Microsoft.mshtml también te lo agradeceré pues he buscado
en google y no he
encontrado nada, y ciertamente traducir la información
del msdn es una tarea
algo ardua sobre todo para alguien que como yo aún no
tiene un profundo
dominio del inglés.

Saludos afectuosos desde Cuba,

Roberto.
Mostrar la cita
en Google.com por
Mostrar la cita
Solapa COM) "Microsoft
Mostrar la cita
NET) el assembly
Mostrar la cita
al documento
Mostrar la cita
axWebBrowser1.Navigate; por
Mostrar la cita
ref
Mostrar la cita
boton, por ejemplo),
Mostrar la cita
forma:
Mostrar la cita
axWebBrowser1.Document;
Mostrar la cita
(mshtml.HTMLSpanElementClass)
Mostrar la cita
mensaje
Mostrar la cita
Ads by Google
Search Busqueda sugerida