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

Como crear XML a Partir de PHP

Estas en el tema de Como crear XML a Partir de PHP en el foro de Programación General en Foros del Web. HOla No se mucho sobre XML, por lo que solicito de su ayuda para lo siguiente ¿Como puedo crear dinamicamente un documento XML como el ...
  #1 (permalink)  
Antiguo 03/11/2005, 09:25
Avatar de cookie  
Fecha de Ingreso: agosto-2002
Mensajes: 688
Antigüedad: 21 años, 8 meses
Puntos: 0
Como crear XML a Partir de PHP

HOla

No se mucho sobre XML, por lo que solicito de su ayuda para lo siguiente

¿Como puedo crear dinamicamente un documento XML como el que muestro abajo (A partir de una aplicacion en PHP/MySQL)


Código PHP:
<graph caption='Decline in Net Interest Margins of Asian Banks (1995-2001)' subCaption='(in Percentage %)' yaxisname='Points' xaxisname='Country' numdivlines='3' zeroPlaneColor="333333" zeroPlaneAlpha='40' numberSuffix='%'>
<
set name='Taiwan' value='-0.33' color='F23456'/> 
<
set name='Mexico' value='2.27' color='FF6600'/> 
<
set name='Hong Kong' value='0.40' color='009966' /> 
<
set name='Philippinas' value='0.6' color='CC3399'/> 
<
set name='Singapur' value='-0.8' color='FFCC33' />
<
set name='Thailandia' value='-2.2' color='F23456'/> 
<
set name='India' value='1.2' color='FF6600'/> 
</
graph
O si por lo menos puedo "llenar" el valor de la propiedad "VALUE" a partir de mi base de datos.

Espero haber sido lo suficientemente explicito

Gracias
__________________
___________________________

do the evolution ¡
Mineriaenlinea.com
  #2 (permalink)  
Antiguo 03/11/2005, 12:20
Avatar de biffly  
Fecha de Ingreso: junio-2005
Mensajes: 315
Antigüedad: 18 años, 10 meses
Puntos: 0
Nose si te servira pero yo con ASP los genero asi:
Código:
<graph caption='Decline in Net Interest Margins of Asian Banks (1995-2001)' subCaption='(in Percentage %)' yaxisname='Points' xaxisname='Country' numdivlines='3' zeroPlaneColor="333333" zeroPlaneAlpha='40' numberSuffix='%'>
<%
RSTMP.Open SQL, CONEXION
WHILE NOT RSTMP.EOF
    Response.Write "<set name='" & RSTMP.Fields("NAME") & "' value='" & RSTMP.Fields("VALUE") & "' color='" & RSTMP.Fields("COLOR") & "'/>"
    RSTMP.MoveNext()
WEND
%>
</graph>
rstmp: es el recorset que tenes que crear(le podes poner el nombre que te quede mas comodo
SQL: la consulta a tu DB
conexion la conexion con tu DB

el resto es solo un bucle donde recorres tu recordset escribiendo el contenido con el formato para el XML. Espero que te sea de ayuda, saludos :))
__________________
Sigue al indio desnudo... Pero con precaución, atendiendo las señales de transito y comentando todo lo que haces.
REM Hay que encontrar el camino de regreso y no siempre es facil....
  #3 (permalink)  
Antiguo 03/11/2005, 13:39
Avatar de cookie  
Fecha de Ingreso: agosto-2002
Mensajes: 688
Antigüedad: 21 años, 8 meses
Puntos: 0
uy, creo que no entendí nada

:D
__________________
___________________________

do the evolution ¡
Mineriaenlinea.com
  #4 (permalink)  
Antiguo 04/11/2005, 18:54
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Hola Cookie!

Te pongo un ejemplo en PHP, te deje dentro del código las líneas de comentarios toda la descripción por si tienes alguna duda.

Código PHP:
//Establecemos la conexión y selección de la base de datos...
$idCon = mysql_connect('localhost', '', '') or die('fallo en la conexión');
mysql_select_db('mi_Banco', $idCon) or die('fallo en la DB');
//Realizamos la consulta...
$datos = "SELECT * FROM banco";
$datos = mysql_query($datos) or die('Error en la Consulta');
//Almacenamos el nodo raiz en la variable documento que contendrá en si el documento final...
$documento = "<?xml version="1.0\" encoding=\"iso-8859-1\"?>
              <graph caption='Decline in Net Interest Margins of Asian Banks (1995-2001)' 
              subCaption='(in Percentage %)' yaxisname='Points' xaxisname='Country' numdivlines='3' 
              zeroPlaneColor=\"333333\" zeroPlaneAlpha='40' numberSuffix='%'>"
;

//Hacemos el bucle para parsear la información y agregarla a la variable documento...
while($datos_b mysql_fetch_array($datos)){

     
$documento.= "<set name='".$datos_b['bancoA']."' value='".$datos_b['bancoB']."' color='".$datos_b['bancoC']."'/>"
}
//Cerrar el nodo raiz...
$documento.= "</graph>";
//Indicamos a las cabeceras que tipo de documento se va sacar al buffer de salida...
header('Content-Type: text/xml');
//Sacamos al buffer de salida el documento...
echo $documento;
Este script te genera el documento XML, pero no estoy seguro si solamente lo quieres generar o guardar posteriormente

Suerte!
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #5 (permalink)  
Antiguo 06/11/2005, 18:42
Avatar de cookie  
Fecha de Ingreso: agosto-2002
Mensajes: 688
Antigüedad: 21 años, 8 meses
Puntos: 0
Que tal jahepi

Gracias por responder, voy a probar el ejemplo que me pones. ...

Cita:
Este script te genera el documento XML, pero no estoy seguro si solamente lo quieres generar o guardar posteriormente
Si necesito guardarlo en un archivo que se llame data.xml
__________________
___________________________

do the evolution ¡
Mineriaenlinea.com
  #6 (permalink)  
Antiguo 06/11/2005, 20:29
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Cita:
Iniciado por cookie
Que tal jahepi

Gracias por responder, voy a probar el ejemplo que me pones. ...



Si necesito guardarlo en un archivo que se llame data.xml
Hola Cookie!

Anadaba pasando por aquí y me dí cuenta que ya habías respondido, hahaha , si quieres guardarlo, le agregué unas líneas al código para que te lo realice.

Código PHP:
//Establecemos la conexión y selección de la base de datos...
$idCon = mysql_connect('localhost', '', '') or die('fallo en la conexión');
mysql_select_db('mi_Banco', $idCon) or die('fallo en la DB');
//Realizamos la consulta...
$datos = "SELECT * FROM banco";
$datos = mysql_query($datos) or die('Error en la Consulta');
//Almacenamos el nodo raiz en la variable documento que contendrá en si el documento final...
$documento = "<?xml version="1.0\" encoding=\"iso-8859-1\"?>
              <graph caption='Decline in Net Interest Margins of Asian Banks (1995-2001)'
              subCaption='(in Percentage %)' yaxisname='Points' xaxisname='Country' numdivlines='3'
              zeroPlaneColor=\"333333\" zeroPlaneAlpha='40' numberSuffix='%'>"
;

//Hacemos el bucle para parsear la información y agregarla a la variable documento...
while($datos_b mysql_fetch_array($datos)){

     
$documento.= "<set name='".$datos_b['bancoA']."' value='".$datos_b['bancoB']."' color='".$datos_b['bancoC']."'/>";
}
//Cerrar el nodo raiz...
$documento.= "</graph>";
//vamos a guardar el documento antes de sacarlo al buffer de salida...
$mi_XML fopen('data.xml''w');
fwrite($mi_XML$documento);
fclose($mi_XML);
//Indicamos a las cabeceras que tipo de documento se va sacar al buffer de salida...
header('Content-Type: text/xml');
//Sacamos al buffer de salida el documento...
echo $documento;
Suerte!
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #7 (permalink)  
Antiguo 17/11/2005, 17:16
Avatar de cookie  
Fecha de Ingreso: agosto-2002
Mensajes: 688
Antigüedad: 21 años, 8 meses
Puntos: 0
Lo voy a probar

Te lo agradezco mucho jahepi


Saludos
__________________
___________________________

do the evolution ¡
Mineriaenlinea.com
  #8 (permalink)  
Antiguo 21/11/2005, 14:22
 
Fecha de Ingreso: diciembre-2004
Mensajes: 108
Antigüedad: 19 años, 5 meses
Puntos: 1
he probado el codigo me guarda o me crea el archivo xml pero no me muesta nada me da este error no se por que

No se puede mostrar la página XML
No se puede ver la entrada XML con la hoja de estilo . Corrija el error y haga clic en el botón Actualizar, o inténtelo de nuevo más tarde.


--------------------------------------------------------------------------------

Número de versión no válido. Error al procesar el recurso http://localhost/practicas/rss.php. Línea 1, Posición 16

<?xml version='1.0\' encoding=\'iso-8859-1\'?>
---------------^
  #9 (permalink)  
Antiguo 22/11/2005, 05:37
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 4 meses
Puntos: 0
tengo casi el mismo mensaje de error

Parse error: parse error, unexpected T_DNUMBER in C:\servidor\hace_xml.php on line 16

y la linea es $documento = "<?xml version="1.0" encoding="iso-8859-1"?>
o lo que es lo mismo

$documento = "<?xml version="1.0" encoding="iso-8859-1"?>
<graph caption='Decline in Net Interest Margins of Asian Banks (1995-2001)'
subCaption='(in Percentage %)' yaxisname='Points' xaxisname='Country' numdivlines='3'
zeroPlaneColor=\"333333\" zeroPlaneAlpha='40' numberSuffix='%'>";
  #10 (permalink)  
Antiguo 22/11/2005, 14:40
 
Fecha de Ingreso: diciembre-2004
Mensajes: 108
Antigüedad: 19 años, 5 meses
Puntos: 1
bueno consegui otro script este si me sirvio en local pero cuando la subo al servidor me muestra todo el contenido de la bd pero sin formato una sola hoja con un monton de letras pegadas todas juntas este es el codigo

<?php
header ("Content-type: text/xml");

echo ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
?>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:hr="http://www.w3.org/2000/08/w3c-synd/#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
<channel rdf:about="http://www.xmlmania.com/xml/feeds/news.php">
<title>mundonica</title>
<description>noticias</description>
<link>http://mundonica.webcindario.com/rss2.php</link>
</channel>

<?php
//mysql_connect ("mysql.webcindario.com", "mundonica", "dav1981") or die ("Cannot connect to database server.");
mysql_connect ("localhost", "root", "") or die ("Cannot connect to database server.");
mysql_select_db ("mundonica") or die ("Cannot connect to database.");

$result = mysql_query ("select * from phpnews_news order by id desc limit 0,10") or die (mysql_error());

while ($row = mysql_fetch_array ($result)) {
echo (" <item rdf:about=\"http://www.xmlmania.com\">
<title>");
echo $row[subject];
echo ("</title>
<description>");
echo $row[titletext];
echo ("</description>
<link>http://www.xmlmania.com/news_article_");
echo $row[id];
echo (".php");
echo ("</link>
<dc:date>");
echo $row[month];
echo ("</dc:date>
</item>\n\n");
}

mysql_free_result ($result);
?></rdf:RDF>

para que lo prueben y me digan si les ocurre lo mismo en local este es mi salida en xml

<?xml version="1.0" encoding="UTF-8" ?>
- <rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:hr="http://www.w3.org/2000/08/w3c-synd/#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <channel rdf:about="http://www.xmlmania.com/xml/feeds/news.php">
<title>mundonica</title>
<description>noticias</description>
<link>http://mundonica.webcindario.com/rss2.php</link>
</channel>
- <item rdf:about="http://www.xmlmania.com">
<title>prueba3</title>
<description>titulo de la prueba 3</description>
<link>http://www.xmlmania.com/news_article_3.php</link>
<dc:date>October</dc:date>
</item>
- <item rdf:about="http://www.xmlmania.com">
<title>prueba2</title>
<description>titulo de prueba2</description>
<link>http://www.xmlmania.com/news_article_2.php</link>
<dc:date>October</dc:date>
</item>
- <item rdf:about="http://www.xmlmania.com">
<title>prueba para el index y mostrar</title>
<description>Mostramos el title de la noticia en el index</description>
<link>http://www.xmlmania.com/news_article_1.php</link>
<dc:date>October</dc:date>
</item>
</rdf:RDF>
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:05.