En primer lugar les diré que no tengo grandes conocimientos de XML, ni de programación aunque buscando por aquí y por allá he conseguido algunas cosas.
Dicho esto les explico mi problema.
Tengo una web que recoge las distintas noticias desde sendos archivos xml alojados en el servior. El código me han dicho que es muy enrrevesado, pero me funciona perfectamente en Firefox y En IE7. Les voy copiando el código para que vean mejor.
En la cabecera tengo declarado este código:
Código:
En la parte de las noticias (dentro ya del body), tengo 2 scripts uno por cada sistema de noticias.<script type="text/javascript"> function loadXMLDoc(dname) { try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } catch(e) { try //Firefox, Mozilla, Opera, etc. { xmlDoc=document.implementation.createDocument("","",null); } catch(e) {alert(e.message)} } try { xmlDoc.async=false; xmlDoc.load(dname); return(xmlDoc); } catch(e) {alert(e.message)} return(null); } </script>
Noticias Breves:
Código:
Este código me han dicho que es muy raro pero necesito que se cumplan esas 2 condiciones del for para que recorran las noticias del xml de forma que no se repitan (con una variable se recorren las pares y con la otra las impares. No se me ocurria otra forma de solucionar mi problema jejejejej). El caso es que esto también me funciona.<script language="JavaScript" type="text/javascript"> xmlDoc=loadXMLDoc("xml/breves.xml"); x=xmlDoc.getElementsByTagName("seccion"); y=xmlDoc.getElementsByTagName("fecha"); z=xmlDoc.getElementsByTagName("contenido"); for (i=0,a=1;i<x.length,a<x.length;i=i+2,a=a+2) { document.write("<div class='section' id='" + x[i].childNodes[0].nodeValue + "'>" ); document.write("<table summary='tabla' width='100%' border='0'><tr>" ); document.write("<td width='2%' rowspan='2'>"); document.write("<td width='48%' class='Fecha_Breves'>" + y[i].childNodes[0].nodeValue + "<\/td>" ); document.write("<td width='48%' class='Fecha_Breves'>" + y[a].childNodes[0].nodeValue + "<\/td>" ); document.write("<td width='1%' rowspan='2'> <\/td><\/tr><tr>" ); document.write("<td valign='top' class='Texto_Breves'>" + z[i].childNodes[0].nodeValue + "<\/td>" ); document.write("<td valign='top' class='Texto_Breves'>" + z[a].childNodes[0].nodeValue + "<\/td>" ); document.write("<\/tr><\/table><\/div>" ); } </script>
Noticias Normales:
Código:
Es igual que el anterior código pero con las modificaciones pertinentes para que recorra normalmente el xml. <script language="JavaScript" type="text/javascript"> xmlDoc=loadXMLDoc("xml/noticias.xml"); x=xmlDoc.getElementsByTagName("titulo"); y=xmlDoc.getElementsByTagName("fecha"); w=xmlDoc.getElementsByTagName("contenido"); z=xmlDoc.getElementsByTagName("enlaces"); for (i=0;i<x.length;i++) { document.write("<div class='accordion_toggle'>" + x[i].childNodes[0].nodeValue + ". " + y[i].childNodes[0].nodeValue + "<\/div>"); document.write("<div class='accordion_content'>" + w[i].childNodes[0].nodeValue ); document.write("<br /><br />" ); document.write(z[i].childNodes[0].nodeValue + "<\/div>" + "<br />" ); } </script>
Ahora bien, esto funciona perfectamente en Firefox y en IE7. El problema lo tengo con Safari, ya que arroja este error:
Código:
He buscado mucha informacion al respecto y todo el mundo apunta a usar XMLHttpRequest, pero por mas que lo intento no soy capaz de adaptar el código que yo tengo con mis necesidades con XMLHttpRequest.Value undefinided (result of expresion xmlDoc.load) is not object
Es imposible lo que necesito?
Gracias a todos de antemano.