FAQ
Estimados listeros:
Estoy armando un sistema que guarda una configuración en un fichero
xml, osea, lo quiero usar como una base de datos ya que los datos son
pocos y necesito que se pueda descargar el archivo fácilmente.
Hasta ahora lo que tengo armado es lo siguiente:


--------------------------------------------------------------------
<?xml version='1.0' standalone='no'?>
<configuracion>
<usuario><user>admin</user><descripcion>Administrador</descripcion><grupo>correo</grupo><clave>pass</clave></usuario>
</configuracion>

--------------------------------------------------------------------
$config_file="/path/config.xml";

//Funcion para agregar un usuario al sistema:
function config_adduser($nombre, $clave, $grupo, $desc){
global $config_file;
//Agrego el usuario a la base de datos XML
$xml = simplexml_load_file($config_file);
$xmltmp = $xml->addChild('usuario');
$xmltmp->addChild('user', trim($nombre));
$xmltmp->addChild('clave', trim($clave));
$xmltmp->addChild('grupo', $grupo);
$xmltmp->addChild('descripcion', trim($desc));
config_save($xml->asXML());
unset($xml);
unset($xmltmp);
}
//Guarda la configuración nueva en el xml.
function config_save($contenido){
global $config_file;

$nombre_archivo = $config_file;
$gestor= fopen($nombre_archivo, 'w');
fwrite($gestor, $contenido);
fclose($gestor);
}
--------------------------------------------------------------------

Lo que me falta es como eliminar un nodo, por ejemplo si agrego el
usuario prueba quedaría:

--------------------------------------------------------------------
<?xml version='1.0' standalone='no'?>
<configuracion>
<usuario><user>admin</user><descripcion>Administrador</descripcion><grupo>correo</grupo><clave>pass</clave></usuario>
<usuario><user>prueba</user><descripcion>Prueba</descripcion><grupo>correo</grupo><clave>pass</clave></usuario>
</configuracion>

y si luego lo quiero borrar los datos del usuario prueba, ¿¿como hago??

Saludos,
Gustavo

Search Discussions

  • Pvergara at Jun 21, 2006 at 1:53 pm
    ....
    Lo que me falta es como eliminar un nodo, por ejemplo si agrego el
    usuario prueba quedaría:

    --------------------------------------------------------------------
    <?xml version='1.0' standalone='no'?>
    <configuracion>
    <usuario><user>admin</user><descripcion>Administrador</descripcion><grupo>c
    orreo</grupo><clave>pass</clave></usuario>
    <usuario><user>prueba</user><descripcion>Prueba</descripcion><grupo>correo<
    /grupo><clave>pass</clave></usuario> </configuracion>

    y si luego lo quiero borrar los datos del usuario prueba, ¿¿como hago??
    Mira ahora mismo no recuerdo muy bien el uso del simplexml pero se me ocurren
    dos dormas:

    La primera es que, cuando leas la configuración, los datos los almacenes en
    una tabla, y que, al escribir tengas una función que coja los datos de esta
    tabla y reescriba el fichero, de tal forma que tu lo único que tienes es que
    preocuparte de gestionar una tabla, no los datos parseados de cualquier forma
    por xml (vamos tendrías una capa de abstracción).

    La otra idea que también pasaría por usar el proceso de la tabla tabla es no
    usar xml para cosas tan rematadamente simples, que además de para "quedar
    bien delante de los colegas" ( (del estilo "Oye... que sepais que hago cosas
    con xml!!!! ¿molo o no molo? ;-D") no te servirán para mucho mas. A ver, la
    configuracion que tu planteas a mi modo de ver las cosas, quizás te sea mas
    fácil plantearla usando los ficheros .ini de toda la vida (ya sabes como los
    que usa el propio php sin fardar), y que te serán mucho mas manejables y
    rápidos de tratar a la larga (échate un vistazo a la función parse_ini_file).

    Todo esto que te he contado viene por una reflexión que hizo una vez un
    compañero mio de curro, y que creo que tiene razón: como ahora todo el mundo
    habla de xml hay que usarlo hasta en la sopa, y para cosas que realmente no
    tienen mucho sentido (y siento decirte que PERSONALMENTE para mi éste es uno
    de esos casos).
    Saludos,
    Gustavo
    Saludos.

    --
    ----
    Pablo C. Vergara Castro.
    Departamento de informática.
    TQR-Software
    Tlfno.: (+34) 986 39 31 49
    Fax: (+34) 986 31 25 96


    La información transmitida va dirigida únicamente a la persona o entidad
    que se muestra como destinatario y puede contener datos confidenciales o
    privilegiados. Toda revisión, retransmisión, diseminación u otro uso o
    acción al respecto por parte de personas o entidades distintas al
    destinatario está prohibida. Si recibe esto por error, por favor
    contacte con la persona que figura como remitente y elimine el material
    de cualquier ordenador.


    The information transmitted is intended only for the person or entity to
    which it is addressed and may contain confidential and/or privileged
    material. Any review, retransmission, dissemination or other use of, or
    taking of any action in reliance upon, this information by persons or
    entities other than the intended recipient is prohibited. If you
    received this in error, please contact the sender and delete the
    material from any Computer.
  • Gustavo Azambuja at Jun 21, 2006 at 4:42 pm

    Lo que me falta es como eliminar un nodo, por ejemplo si agrego el
    usuario prueba quedaría:

    --------------------------------------------------------------------
    <?xml version='1.0' standalone='no'?>
    <configuracion>
    <usuario><user>admin</user><descripcion>Administrador</descripcion><grupo>c
    orreo</grupo><clave>pass</clave></usuario>
    <usuario><user>prueba</user><descripcion>Prueba</descripcion><grupo>correo<
    /grupo><clave>pass</clave></usuario> </configuracion>

    y si luego lo quiero borrar los datos del usuario prueba, ¿¿como hago??
    Mira ahora mismo no recuerdo muy bien el uso del simplexml pero se me ocurren
    dos dormas:

    La primera es que, cuando leas la configuración, los datos los almacenes en
    una tabla, y que, al escribir tengas una función que coja los datos de esta
    tabla y reescriba el fichero, de tal forma que tu lo único que tienes es que
    preocuparte de gestionar una tabla, no los datos parseados de cualquier forma
    por xml (vamos tendrías una capa de abstracción).

    La otra idea que también pasaría por usar el proceso de la tabla tabla es no
    usar xml para cosas tan rematadamente simples, que además de para "quedar
    bien delante de los colegas" ( (del estilo "Oye... que sepais que hago cosas
    con xml!!!! ¿molo o no molo? ;-D") no te servirán para mucho mas. A ver, la
    configuracion que tu planteas a mi modo de ver las cosas, quizás te sea mas
    fácil plantearla usando los ficheros .ini de toda la vida (ya sabes como los
    que usa el propio php sin fardar), y que te serán mucho mas manejables y
    rápidos de tratar a la larga (échate un vistazo a la función parse_ini_file).

    Todo esto que te he contado viene por una reflexión que hizo una vez un
    compañero mio de curro, y que creo que tiene razón: como ahora todo el mundo
    habla de xml hay que usarlo hasta en la sopa, y para cosas que realmente no
    tienen mucho sentido (y siento decirte que PERSONALMENTE para mi éste es uno
    de esos casos).

    Saludos,
    Gustavo
    Saludos.
    Desde ya te agradezco por lo extensa de tu contestación, entiendo
    perfectamente los puntos que mencionas, pero con respecto a hacer una
    capa de abstracción con la base de datos, el problema que tengo es que
    no tendré en los servidores que esto corre, una ddbb para poder
    aplicarlo (es inviable).
    Con respecto a usar ficheros tipo .ini, si, realmente me parece una
    opción, pero es que realmente, y tal como mencionas, es mi primera vez
    usando xml, y es que quería aprender a usarlos (al menos para algo tan
    simple como esto) y me parecio una buena oportunidad.
    Cabe aclarar que en el fichero xml no solo se guardaran usuarios, si no
    mucha más información de la configuración (reglas de filtrado, aliases,
    puertos, ip's, quotas, etc. etc.)

    Saludos,
    Gustavo
  • Pvergara at Jun 21, 2006 at 5:01 pm
    El Miércoles, 21 de Junio de 2006 18:41, Gustavo Azambuja escribió:

    [...]
    Desde ya te agradezco por lo extensa de tu contestación, entiendo
    perfectamente los puntos que mencionas, pero con respecto a hacer una
    capa de abstracción con la base de datos, el problema que tengo es que
    no tendré en los servidores que esto corre, una ddbb para poder
    aplicarlo (es inviable).
    Hola de nuevo Gustavo.

    Mira, creo que no me entendiste bien, cuando hablo de una capa de abstracción
    no me hago referencia en ningún caso a las bases de datos, osea, no hablaba
    de que creases una capa de abstracción a sistemas de gestión de datos, sinó
    que creases funciones de "alto nivel" (tipo, "mixed
    getConfiguracion(void)", "void setConfiguracion(mixed tablaConfiguracion)" )
    que serían las que al fin y al cabo utilizases independientemente del tipo de
    fichero de configuración que acabes usando, las ventajas de esto son
    básicamente:

    1º) Que tenía esto es que tu siempre trabajarías con tablas,
    independientemente de que "por debajo" estés usando xml, .ini's o incluso una
    BBDD (ahora si me hago referencia a ellas ;-) ).

    2º) Que bien hechas esas funciones no tienes que hacer mas código para
    almacenar mas información en tus ficheros de configuración.


    Con respecto a usar ficheros tipo .ini, si, realmente me parece una
    opción, pero es que realmente, y tal como mencionas, es mi primera vez
    usando xml, y es que quería aprender a usarlos (al menos para algo tan
    simple como esto) y me parecio una buena oportunidad.
    Cabe aclarar que en el fichero xml no solo se guardaran usuarios, si no
    mucha más información de la configuración (reglas de filtrado, aliases,
    puertos, ip's, quotas, etc. etc.)
    Si te digo la verdad imaginaba que almacenabas mas información, y espero que
    lo que te he comentado antes no te haya sentado mal pues no es mi intención;
    lo que pasa es que, a veces, me gusta hacer este tipo de reflexiones públicas
    (que puedan incluso abrir debates interesantes) mas hayá de la programación
    en php (pero siempre en relación a éste), puesto que así creo que también se
    puede aportar algo más que ayuda.
    Saludos,
    Gustavo
    Saludos.

    --
    ----
    Pablo C. Vergara Castro.
    Departamento de informática.
    TQR-Software
    Tlfno.: (+34) 986 39 31 49
    Fax: (+34) 986 31 25 96


    La información transmitida va dirigida únicamente a la persona o entidad
    que se muestra como destinatario y puede contener datos confidenciales o
    privilegiados. Toda revisión, retransmisión, diseminación u otro uso o
    acción al respecto por parte de personas o entidades distintas al
    destinatario está prohibida. Si recibe esto por error, por favor
    contacte con la persona que figura como remitente y elimine el material
    de cualquier ordenador.


    The information transmitted is intended only for the person or entity to
    which it is addressed and may contain confidential and/or privileged
    material. Any review, retransmission, dissemination or other use of, or
    taking of any action in reliance upon, this information by persons or
    entities other than the intended recipient is prohibited. If you
    received this in error, please contact the sender and delete the
    material from any Computer.
  • Martin Alterisio at Jun 21, 2006 at 6:01 pm
    El día 21/06/06, Gustavo Azambuja escribió:
    Estimados listeros:
    Estoy armando un sistema que guarda una configuración en un fichero xml,
    osea, lo quiero usar como una base de datos ya que los datos son pocos y
    necesito que se pueda descargar el archivo fácilmente.
    Hasta ahora lo que tengo armado es lo siguiente:


    --------------------------------------------------------------------
    <?xml version='1.0' standalone='no'?>
    <configuracion>

    <usuario><user>admin</user><descripcion>Administrador</descripcion><grupo>correo</grupo><clave>pass</clave></usuario>
    </configuracion>

    --------------------------------------------------------------------
    $config_file="/path/config.xml";

    //Funcion para agregar un usuario al sistema:
    function config_adduser($nombre, $clave, $grupo, $desc){
    global $config_file;
    //Agrego el usuario a la base de datos XML
    $xml = simplexml_load_file($config_file);
    $xmltmp = $xml->addChild('usuario');
    $xmltmp->addChild('user', trim($nombre));
    $xmltmp->addChild('clave', trim($clave));
    $xmltmp->addChild('grupo', $grupo);
    $xmltmp->addChild('descripcion', trim($desc));
    config_save($xml->asXML());
    unset($xml);
    unset($xmltmp);
    }
    //Guarda la configuración nueva en el xml.
    function config_save($contenido){
    global $config_file;

    $nombre_archivo = $config_file;
    $gestor= fopen($nombre_archivo, 'w');
    fwrite($gestor, $contenido);
    fclose($gestor);
    }
    --------------------------------------------------------------------

    Lo que me falta es como eliminar un nodo, por ejemplo si agrego el usuario
    prueba quedaría:

    --------------------------------------------------------------------
    <?xml version='1.0' standalone='no'?>
    <configuracion>

    <usuario><user>admin</user><descripcion>Administrador</descripcion><grupo>correo</grupo><clave>pass</clave></usuario>

    <usuario><user>prueba</user><descripcion>Prueba</descripcion><grupo>correo</grupo><clave>pass</clave></usuario>
    </configuracion>

    y si luego lo quiero borrar los datos del usuario prueba, ¿¿como hago??

    Saludos,
    Gustavo

    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php
    No hay funcion documentada para eliminar nodos en simplexml, podes intentar
    usar unset() para eliminar el hijo directamente de entre las propiedades del
    objeto, pero no lo recomiendo ya que no esta documentado como reacciona el
    objeto a esta modificacion. Te recomiendo ver http://php.net/dom y tratar de
    trabajar solo con eso o combinando esa libreria y la libreria simplexml.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedJun 21, '06 at 1:43p
activeJun 21, '06 at 6:01p
posts5
users3
websitephp.net

People

Translate

site design / logo © 2022 Grokbase