Foros del Web » Programando para Internet » Javascript »

¿Imposible obtener XML de un iframe con IE9 con document.XMLDocument?

Estas en el tema de ¿Imposible obtener XML de un iframe con IE9 con document.XMLDocument? en el foro de Javascript en Foros del Web. Hola a todos: En IE7 e IE8 he estado usando la propiedad document.XMLDocument para obtener un documento XML puro proveniente de un iframe. De lo ...
  #1 (permalink)  
Antiguo 11/07/2011, 09:04
Avatar de Negora  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 meses
Puntos: 5
¿Imposible obtener XML de un iframe con IE9 con document.XMLDocument?

Hola a todos:

En IE7 e IE8 he estado usando la propiedad document.XMLDocument para obtener un documento XML puro proveniente de un iframe. De lo contrario, el documento con el que estarías tratando sería el documento HTML (de tipo DispHTMLDocument) que genera Internet Explorer para mostrar el XML de un modo "bonito" al usuario.

Esto lo he necesitado por ejemplo para enviar archivos de manera asíncrona, empleando para ello un iframe invisible y recuperando de él la respuesta en XML (el ya clásico truco).

El problema es que al emplear IE9 en modo estándar (al menos con el tipo de documento XHTML 1.0 transitorio), éste ya no devuelve un objeto DispHTMLDocument, sino uno de tipo Document, el cual no dispone de la propiedad XMLDocument arriba mencionada.

Así las cosas, el principal problema es que, aunque se puede navegar entre los nodos manualmente, es imposible emplear lenguaje XPath para recorrerlos. La razón es que no existe método "selectNodes" en ninguno de ellos, precisamente por tratarse de elementos de Document y no de un documento XML puro.

Buscando por Internet he leído sobre un problema aparte, que es que IE9 fuerza a todo contenido cargado en un iframe a tener el mismo tipo de documento (DOCTYPE) que el documento contenedor. Y creo que es de aquí de donde radica todo este problemón, ya que lo que debería de ser interpretado XML se trata de convertir en XHTML (porque uso este tipo en el documento contenedor).

De ser así me parece que no me va a quedar más remedio que editar todos mis HTML para que hagan uso del modo IE8 (usando la meta-etiqueta "X-UA-Compatible"), al menos temporalmente. Según he leído, Microsoft ha manifestado que este comportamiento es intencionado... Pero a mí me parece una decisión absolutamente nefasta.

¿A alguien se le ocurre algo sobre este tema?
  #2 (permalink)  
Antiguo 12/07/2011, 10:44
Avatar de Negora  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: ¿Imposible obtener XML de un iframe con IE9 con document.XMLDocument?

Bueno, hoy he estado enredado con este tema y finalmente he optado por prescindir de las expresiones XPath para navegar dentro de los XML. Así al menos puedo aprovechar de alguna manera lo que devuelve IE9.

Por suerte he podido ir reemplazando todas las expresiones XPath que uso por llamadas reiterativas al método Node.getElementsByTagName (). Evidentemente no es tan efectivo como un XPath, ya que devuelve todos los nodos y no hay manera de limitar el nº de resultados. Pero bueno, mejor esto que nada...

Por cierto, que probé a forzar la compatibilidad con IE8 mediante la meta-etiqueta "X-UA-Compatible" y no hubo manera de hacerlo funcionar. El navegador sí se comporta como IE8, pero sin embargo devuelve el mismo objecto Document que IE9. Curiosamente, si fuerzas este mismo modo mediante las herramientas de desarrollador (tecla F12), sí que se comporta como debe de ser. No entiendo nada.
  #3 (permalink)  
Antiguo 12/07/2011, 11:02
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: ¿Imposible obtener XML de un iframe con IE9 con document.XMLDocument?

No te convendría usar JSON?
  #4 (permalink)  
Antiguo 12/07/2011, 11:12
Avatar de Negora  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: ¿Imposible obtener XML de un iframe con IE9 con document.XMLDocument?

Panino5001: pues a decir verdad es algo a lo que en su momento le dí muchas vueltas, je je je. Hace años estuve como 2 semanas preguntándome qué hacer y al final opté por XML por aquello de poder reutilizar la misma salida para servicios Web, porque me pareció que estaba mejor estructurado para lo que yo quería, y porque me gustaba poder usar XPath y métodos DOM para hacer consultas o búsquedas más o menos complejas. La única "pega" es que, al emplear etiquetas, requiere más texto.

Etiquetas: html, ie9, iframe, xml
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:46.