generar xml con php

Gabriela
25 de Enero del 2005
Hola, necesito generar un archivo xml ingresando solo el id de una encuesta previamente guardada en una base de datos ... el formato del xml lo tengo pero no se como generarlo. agradeceria cualquier ayuda.

dickty
25 de Enero del 2005
Siempre puedes contratar a un programador que lo haga, en el caso de que estuvieras haciendo tu el diseño gráfico.

Si eres programador lo que puedes hacer es mirar algo sobre bases de datos primero y luego usar una libreria para xml.

xml-lib y sablotron para xsl.

Saludos,

iron-phoenix
25 de Enero del 2005
Hola, yo cuando tengo que generar un xml lo que hago es que me creo la plantilla xml en un archivo, pero en vez de los datos poner los campos entre llaves ( { } ) vamos una plantilla normal y corriente.

Luego leo ese fichero del disco duro y leo los valores de la bbd,
Reemplazo los valores y guardo el nuevo documento que es el fichero xml que estabas buscando.

Me ha quedado un poco liado esto, intentaré explcarme:

1.- leer plantilla xml
2.- leer datos de la bbdd
3.- reemplazar los datos en la plantilla
4- guardar el fichero resultante.

Espero que sirva de algo.

Mario
25 de Enero del 2005
Bien Gaby espero te ayude este codigo que genera un xml a partir de una consulta a una BD en mysql.
necesitaras 2 archivos el de PHP y el xml este ultimo en blanco por que con el PHP lo escribirás. Saludos

<?php

// ------ Conectar a la base de Datos BD ------

$conexion = mysql_connect('localhost','root','');
mysql_select_db('BD',$conexion);

// ------ Realizar Consulta a la Base de Datos ------

$recordset=mysql_query("SELECT * FROM clientes",$conexion);

// ------ Abrir Archivo XML ------

$xml=fopen('BD.xml','w');

// ------ Verificación de la apertura del Archivo ------

if ($xml==null)
echo"Error al Abrir el Archivo";
else
{

// ------ Escribimos el Archivo XML ------

$escribir=fwrite($xml,'<?xml version="1.0" encoding="UTF-8"?>'"n");
$escribir=fwrite($xml,'<?xml-stylesheet type="text/xsl" href="BD.xsl" ?>'"n");
$escribir=fwrite($xml,'<clientes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/Mundo_X/DataBases/BDSchema.xsd">'"n");


while ($registro=mysql_fetch_array($recordset))

// ------ Recordset de la Consulta a la Base de Datos ------

{

$escribir=fwrite($xml,"<datos>n");
$escribir=fwrite($xml," <id>".$registro["id"]."</id>n");
$escribir=fwrite($xml," <nombre>".$registro["nombre"]."</nombre>n");
$escribir=fwrite($xml," <paterno>".$registro["paterno"]."</paterno>n");
$escribir=fwrite($xml," <materno>".$registro["materno"]."</materno>n");
$escribir=fwrite($xml," <fnacimiento>".$registro["fnacimiento"]."</fnacimiento>n");
$escribir=fwrite($xml," <rfc>".$registro["rfc"]."</rfc>n");
$escribir=fwrite($xml," <nss>".$registro["nss"]."</nss>n");
$escribir=fwrite($xml," <calle>".$registro["calle"]."</calle>n");
$escribir=fwrite($xml," <colonia>".$registro["colonia"]."</colonia>n");
$escribir=fwrite($xml," <delegacion>".$registro["delegacion"]."</delegacion>n");
$escribir=fwrite($xml," <cp>".$registro["cp"]."</cp>n");
$escribir=fwrite($xml," <estado>".$registro["estado"]."</estado>n");
$escribir=fwrite($xml," <telefono>".$registro["telefono"]."</telefono>n");
$escribir=fwrite($xml," <producto>".$registro["producto"]."</producto>n");
$escribir=fwrite($xml," <email>".$registro["email"]."</email>n");
$escribir=fwrite($xml,"</datos>n");


}
}

$escribir=fwrite($xml,'</clientes>'"n");

// ------ Cerramos el Archivo XML ------

fclose($xml);


// ------ Cerramos la Conexion a la Base de Datos ------

mysql_free_result($recordset);
mysql_close($conexion);

echo"El archivo XML se ha escrito con Exito....";


?>

Al Final tu xml quedará algo parecido a esto siempre y cuando se considerén el número de registros.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="BD.xsl" ?>

<clientes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/Mundo_X/DataBases/BDSchema.xsd">
<datos>
<id>3609189</id>
<nombre>Mario Alberto</nombre>
<paterno>Ortega</paterno>
<materno>Trejo</materno>
<fnacimiento>02-Mayo-1979</fnacimiento>
<rfc>OETM790502MJA</rfc>
<numseg>678965412</numseg>
<calle>Sabadell No 110 E 15 Depto 302</calle>
<colonia>San Nicolas Tolentino</colonia>
<delegacion>Iztalapa</delegacion>
<cp>09860</cp>
<estado>Distrito Federal</estado>
<telefono>56126873</telefono>
<producto>SkateBoarding Magazzine</producto>
<email>[email protected]</email>
</datos>
</clientes>