XML addchild
Hola chic@s,
me estoy volviendo turulato porque ando desentrenao en buscar por internet.
Estoy intentando crear un PHP que me añada datos en un xml como este:
<calendario>
<evento dia = "15" mes = "8" anyo = "2003">evento 0</evento>
<evento dia = "28" mes = "8" anyo = "2003">evento 1</evento>
</calendario>
Consistiria en un formulario donde se introducen los nodos y luego se añaden al xml.
Me guiais un poco?
De momento tengo formulario con campos....como sigo?
Quiero que el xml se vuelva a guardar en el disco, no solo escribir en el objeto XML sino tambien guardarlo en disco.
P.D. He rebuscado internet pero no encuentro nada... o encuentro mucho y no se utilizarlo.
pedro_fm
joder surt. casualité que ando en lo mismo sólo que para alimentar el componente de calendario de flash MX.
ya te diré si doy con algo, o si al final decido pasarle el curro al programador (que no me mola ya que está con sus cosas que son no pocas...) si eso posteo el codigo
Surt
JAJAJAJA!! Pues que sepas que prove Flashmaestro para buscar algo por el estilo :D
A ver, por lo que he leido por ahi lo que hay que hacer es leer el fichero xml, luego pasarlo a Objeto XML, una vez alli mediante DOM o algo añadir lo que necesitemos, despues escribir el objeto xml a disco sin mas.
Ahora bien... los pasos.... a ver si voy descubriendo retazos por ahi...
(yo lo hago porque quiero que Patricia actualice el calendario que modifique aqui: http://falcon.xssl.net/~admin158/2/
De esa pagina recuerdo haber recibido buenas criticas tuyas :D
Surt
[EDIT] El link de abajo no sirve para nada [/EDIT]
http://www.risource.org/phpTools/xml2tree/README.html
Eso he encontrado y parece atractivo.
meddle
Surt
[EDIT] El link de abajo no sirve para nada [/EDIT]
hombre... tanto como eso... si se le ponen minutos se puede sacar un buen parser de ahi. Os recomiendo el articulito de Oscar de gen7es. a ver, vamos a probar, la idea es mas o menos la siguiente, pero ojo que yo de XML/PHP ni puta idea, eh?
<code><?php
// archivo XML de donde sacamos la informacion.
// aqui que cada uno ponga su xml
$file = "http://www.mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.com";
//ojo lectura/escritura, creo que es w+, ni idea
$fp = fopen($file,"w+");
$nuevoXML = "";
$parser = xml_parser_create();
function etiquetaApertura($parser, $etiqueta) {
}
function etiquetaCierre($parser, $etiqueta) {
}
// esta es la funcion importante, se ejecuta cada vez que se lee una linea del XML original:
function mostrarDatos($parser, $dato) {
global $nuevoXML;
// ejemplo de lo que te interesa:
if(eregi("<calendario>", $dato) OR eregi("</calendario>", $dato)) {
//aqui parseas lo que quieras
}
//checkeas si es la ultima linea, entonces grabas a disco:
fwrite ($fp, $nuevoXML);
fclose($fp);
}
xml_set_element_handler($parser, "etiquetaApertura", "etiquetaCierre");
xml_set_character_data_handler($parser, "mostrarDatos");
while ($data = fread($fp, 4096)) {
if (!xml_parse($parser, $data, feof($fp))) {
$linea = xml_get_current_line_number($parser);
$columna = xml_get_current_column_number($parser);
print("XML Error: line(".$linea.") column(".$columna.")");
}
}
// empezamos:
xml_parser_free($parser);
?>
</code>
suerte, a ver si entre todos aprendemos algo.
Surt
Aqui esta la libreria que postee antes vacia, parse, modifica y esribe xml... la estudio y os digo
http://www.softky.com/xml2tree/
FUNCIONA!!!! Y SIN HACER NADA!!!!!!!
Simplemente descomprimo el tar en el sitio, luego edito el archivo readwrite.php que es un ejemplo de la libreria para mostrar y añadir nodos al xml. Cambio la linea
$topNode->insertChildText(<<<<lo que añadimos>>>>, 0);
y listo!!!! Me escibe el nodo de arriba con lo que añada.. en mi caso añade esto:
"<evento dia = '16' mes = '8' anyo = '2003'>evento 2</evento>"
ahora solo tengo que hacer el formulario, convertir los datos a una cadena como esa y luego añadirla al XML... YUPIIIII
Problema : No he aprendido nada de XML. (pero ya tendre tiempo otro año :D)
pedro_fm
me la estoy mirando yo tb. de momento parece que esta bien
este tutorial generico tambien puede ayudarnos http://www.zend.com/zend/tut/tutbarlach.php
Surt
mirate el post editado arriba :D
No vamos a aprender gran cosa pero a mi me viene al pelo!
pau
Mirad este ejemplo.
Igual también os sirve aunque solo sea válido para IE sobre Windows. Utiliza el parser XML que lleva dentro el navegador. Hace DataBinding entre las tablas/campos y el fichero XML que descarga. Eso permite realizar su edición completa. Se baja el fichero completo al cliente. Se edita completo y se sube completo de nuevo al servidor.
Esta tecnica permite simplificar mucho la programación del servidor, únicamente se tiene que recoger la variable y machacar el contenido del fichero con el nuevo XML. Algo así:
<code>$news = $HTTP_POST_VARS["news"];
if (!empty($news))
{
$handle = fopen ("noticies.xml", "w");
fwrite($handle, "<?xml version='1.0' encoding='iso-8859-1'?>");
fwrite($handle, $news);
fclose($handle);
}
...</code>
Pensad que es una buena alternativa. No es un área a la que vaya acceder todo el mundo, es un área restringida a mi cliente, o su secretaria, que mantiene las noticias y que tiene un PC con el IE6.
meddle
surt, moooola
pedro_fm
pau, pero lo tienes hecho en asp, no?
surt. ya va la cosa! al menos con un form en html. ahora lo quiero madurarlo para hacer un interfaz clavado al frontend pero con los campos input en flash y que al picar la fecha y hora, escriba el xml
cuando lo tenga (si lo consigo... jeje) posteo cosas
pau
Si Pedro, en realidad tengo las dos versiones. La que te colgado está en ASP y la que he posteado en PHP (que lío).
En cualquier caso, es lo mismo. Recoges la susodicha variable con el XML y la metes en el fichero.
Surt
pedro_fm
pau, pero lo tienes hecho en asp, no?
surt. ya va la cosa! al menos con un form en html. ahora lo quiero madurarlo para hacer un interfaz clavado al frontend pero con los campos input en flash y que al picar la fecha y hora, escriba el xml
cuando lo tenga (si lo consigo... jeje) posteo cosas
huuu que bueno! Pero yo la voy a dejar poniendo las fechas a mano en un formulario.... Veremos como modificar el xml para corregir, etc...