Estoy codificando un lector RSS en Javascript usando XMLHttpRequest
.Leyendo la sección XML CDATA con]] en él
Para algunos RSS Feeds No he tenido problemas, pero en algunos casos el atributo xmlDocument.firstChild
estaba siempre NULL
Después de tratar de ver las diferencias entre el XML que funcionaba y los que no trabajé me encontré con que la siguiente es la causa del error.
<item>
<description>
<![CDATA[This is a description for a test [...]]]>
</description>
</item>
Debido a que en esta descripción de la etiqueta Tengo un corchete de cierre seguida de los soportes de cierre de la CDATA es la causa de mi error, he hecho un código en C# usando LINQ para el mismo XML y todo funcionaba.
El corchete de cierre que está justo antes de los corchetes de cierre de CDATA está causando este extraño comportamiento. Como prueba, intenté leer el mismo XML usando C# y LINQ, todo funcionó bien.
Luego he intentado añadir un espacio entre los paréntesis de cierre, como la siguiente
<![CDATA[This is a description for a test [...] ]]>
y funcionó!
mi código Javascript
function LoadRSS() {
http_request.onreadystatechange = function() { showContent(http_request); };
http_request.open("GET", "./feeds/test.xml", true);
http_request.send(false);
}
function showContent(http_request) {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
var parser = new DOMParser();
var xml_doc = parser.parseFromString(http_request.responseText, "text/xml");
alert(xml_doc.firstChild)
}
else {
xml_doc = null;
}
}
}
¿Alguien se han enfrentado a algo similar? Ahora que realmente no sé cómo proceder, cualquier comentario y sugerencia son bienvenidos.
Parece ser un error en el analizador XML. ¿Qué OS/navegador/versión estás usando? – Phrogz
El navegador se llama OBIGO, es un navegador para teléfonos celulares – YasuDevil
Sí, navegador roto. La sección CDATA puede contener combinaciones ']]'; solo lleno ']]>' lo finaliza. – StaxMan