XML powaaa (CDATA)
Publicado: 27 Ago 2004 13:19
Ueeeh!
Primero de todo,espero que alguien sepa de que hablo.´
Tengo una página en Flash que lee de una base de datos en XML para todo lo que son notícias e información varia. Los Xml están construïdos mediante PHP, que lee desde la BBDD.
El problema que tengo és que no puedo usar en las notícias apóstrofes, paréntesis o otros símbolos porqué entonces se cascan las hojas XML.
He leido del uso del comando CDATA, que hace que el XML no interprete estos símbolos como parte de la programación, sino como texto, però no se como se usa.
El código del PHP sería el siguiente:
Por lo que he leido, el CDATA deberia ir así:
Pero lo único que consigo es que aparezca en el XML la palabra CDATA en cada nódulo seguido de lo que realmente tendría que haber.
snifff,
soy yo.
Primero de todo,espero que alguien sepa de que hablo.´
Tengo una página en Flash que lee de una base de datos en XML para todo lo que son notícias e información varia. Los Xml están construïdos mediante PHP, que lee desde la BBDD.
El problema que tengo és que no puedo usar en las notícias apóstrofes, paréntesis o otros símbolos porqué entonces se cascan las hojas XML.
He leido del uso del comando CDATA, que hace que el XML no interprete estos símbolos como parte de la programación, sino como texto, però no se como se usa.
El código del PHP sería el siguiente:
Código: Seleccionar todo
<?
function updateXML(){
//nombre del xml
$xml = "noticies.xml";
$res = mysql_query("SELECT id,titol, capsalera, text, data, autor FROM noticies ORDER BY data DESC, id DESC")or die(mysql_error());
if( mysql_num_rows ($res) > 0 ){
$salida = "<?xml version='1.0' encoding='UTF-8'?>\n <noticias>\n";
//organizador por fecha
$cid = 0;
while(list($id,$titol ,$capsalera,$text,$data,$autor) = mysql_fetch_array($res)){
//revisamos si hay cambio de fecha.
if($id != $cid){
//si es la primer fecha.
if($cid == 0){
//es la primer etiqueta.
$salida .= "\t<noticia titulo='
".utf8_encode($titol).">\n";
}else{
//no es la primer fecha, cerramos la etiqueta anterior y ponemos la nueva.
$salida .="\t</noticia>\n\t<noticia titulo='".utf8_encode($titol)."'>\n";
}
//actualizamos cfecha.
$cid = $id;
}//fin if de fecha.
//datos normales.
$salida .= "\t\t<datos id='$id' cabecera='".utf8_encode($capsalera)."' texto='".utf8_encode($text)."' fecha='$data' autor='".utf8_encode($autor)."'/>\n";
}//fin del while
//fin del xml
$salida .="\t</noticia>\n</noticias>";
//abrimos el fichero.
$fp = fopen($xml,"w");
//escribimos el contenido de $salida en el.
fwrite($fp,$salida);
//cerramos el fichero
fclose($fp);
}else{
//no hay registros borramos la agenda
//revisamos si el archivo existe
if( is_file($xml)){
//si existe lo borramos
unlink ($xml);
}
}//fin if/else de resltados
} // end func ?>
Por lo que he leido, el CDATA deberia ir así:
Código: Seleccionar todo
$salida .= "\t<noticia titulo='
CDATA[".utf8_encode($titol)."]'>\n";
Pero lo único que consigo es que aparezca en el XML la palabra CDATA en cada nódulo seguido de lo que realmente tendría que haber.
snifff,
