Foros del Web » Programación para mayores de 30 ;) » Programación General »

Editor xml con PHP

Estas en el tema de Editor xml con PHP en el foro de Programación General en Foros del Web. Saludos, Pregunté en el foro de PHP y no me han respondido, espero aquí puedan. Tengo un archivo xml con la siguiente estructura: Código HTML: ...
  #1 (permalink)  
Antiguo 12/08/2005, 16:55
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 19 años, 9 meses
Puntos: 0
Editor xml con PHP

Saludos,

Pregunté en el foro de PHP y no me han respondido, espero aquí puedan.
Tengo un archivo xml con la siguiente estructura:

Código HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<noticias>
<noticia titulo="título 1" url="url 1">texto 1</noticia>
<noticia titulo="título 2" url="url 2">texto 2</noticia>
<noticia titulo="título 3" url="url 3">texto 3</noticia>
<noticia titulo="título 4" url="url 4">texto 4</noticia>
<noticia titulo="título 5" url="url 5">texto 5</noticia>
<noticia titulo="título 6" url="url 6">texto 6</noticia>
</noticias> 
Ese archivo lo leo desde un flash y muestro las noticias, aquí el ejemplo:
http://ensemblesys.com/restauracion/

Ahora bien, estoy creando (intentando) un editor para poder ingresar los datos al xml, y a su vez, recuperarlos, esto es lo que llevo (atorado):
http://percepcionunitaria.org/prueba...a_noticias.php

No he conseguido hacer que las noticias se escriban ni se lean de manera adecuada. Mi servidor utiliza php4 así que las instrucciones DOM no funcionan. Comento que sé muy poco de PHP así que esto es un gran dolor de cabeza para mi, he leído el manual de php.net pero no le comprendo bien.

Se me presentan varios problemas:
1. No consigo que los nodos sin datos los deje vacios, por ello de los input vacios.
2. No puedo mostrar un título de encabezado para cada noticia (bloque de título, url y texto) para saber qué noticia se está editando, ejemplo: Esta es la noticia 1, esta es la noticia 2, etc.
3. Tampoco consigo escribir el formulario con el formato que necesita el xml

Solo necesito que se escriban máximo 6 noticias. Y en caso de que no se escriban noticias, no se escriba el nodo.

Pongo el código que tengo:

Código PHP:
<?

// fichero con el cuerpo en xml
$file "noticias.xml";
// Acción que hace cuando encuentra la primera etiqueta de un elemento.
function start_element($parser$name$attribs){
    while(list(
$key,$value)=each($attribs))
      switch (
$key) {
        case 
'titulo':
?>
<p>Titulo: <input type="text" name="titulo" id="titulo" value="<? echo "$value" ?>" /></p>
<?        
        
break;
        case 
'url':
?>
<p>Url: <input type="text" name="url" id="url" value="<? echo "$value" ?>" /></p>
<?        
        
break;
    }
}
// Acción para cuando encuentre el final de una etiqueta de un elemento.
function end_element($parser$name){
    }
// Recuperar un dato.
function character_data($parser$data){
    if (
$data == "") {
        echo 
"";
        }
    else {
?>
<p>Noticia: <input type="text" name="noticia" id="noticia" value="<? echo "$data" ?>" /></p>
<?
    
}
}
$xml_parser xml_parser_create('');
xml_parser_set_option($xml_parserXML_OPTION_CASE_FOLDING0);
xml_set_element_handler($xml_parser"start_element""end_element");
xml_set_character_data_handler($xml_parser"character_data");

if(!
file_exists($file))
die(
"\n<p>\"$file\" does not exist.</p>\n</body>\n</html>");

if(!(
$handle fopen($file"r")))
die(
"<p>Cannot open \"$file\".</p>\n</body>\n</html>");

while(
$contents fread($handle4096))
xml_parse($xml_parser$contentsfeof($handle));

fclose($handle);

xml_parser_free($xml_parser); 

?>
Gracias !!
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 14:38.