Comunidad de diseño web y desarrollo en internet online

crear xml con php

Citar            
MensajeEscrito el 04 Oct 2011 11:24 pm
Saludo a todos tengo un pequeno problema y quiero ver si me pueden ayudar estoy tratando de generar un xml desde un php para atraparlo en flex pero tengo problemas con los nodos o algo asi aqui mi php:

Código PHP :

 <?php 
include("conexion.php"); //incluimos el archivo conexion.php

    $sql = "SELECT * FROM prueba"; 
 
    $result = mysql_query($sql,$Mysql); 
    while($fila = mysql_fetch_object($result))
   {?>
    <row> 
       <hour> <?php echo $fila->hour?> </hour> 
       <merid><?php echo $fila->meridiem?> </merid> 
       <desc><?php echo $fila->description?> </desc> 
    </row> 
<?php 
    }
?>


tengo que generar una estructura similar a esta:

Código XML :

<data>
  <row>
    <hour>11</hour>
    <merid>am</merid>
    <desc>hola11</desc>
  </row>
  <row>
    <hour>12</hour>
    <merid>pm</merid>
    <desc>hola12</desc>
  </row>
  <row>
    <hour>9</hour>
    <merid>am</merid>
    <desc>hola9</desc>  
</row>
</data>



o esta

Código XML :

<clase>
  <row hour="9" merid="am" des="hola9"/>
  <row hour="10" merid="pm" des="hola10"/>
  <row hour="11" merid="am" des="hola11"/>
  <row hour="12" merid="pm" des="hola12"/>
</clase>



si alguien me puede ayudar por favor...Gracias de ante mano

Por lare

46 de clabLevel



 

msie8
Citar            
MensajeEscrito el 06 Oct 2011 06:49 pm
Tendrías que poner <?xml version="1.0"?> y también header('Content-type: text/xml') para que el navegador lo lea como tal, prueba así:

Código PHP :

<?php
include("conexion.php"); //incluimos el archivo conexion.php
$xml = new SimpleXMLElement('<data></data>');
 
    $sql = "SELECT * FROM prueba";  
  
    $result = mysql_query($sql,$Mysql);  
    while($fila = mysql_fetch_object($result))
{
$xml->addChild('row');
 $xml->row->addChild('hour', $fila->hour);
$xml->row->addChild('merid', $fila->meridiem);
$xml->row->addChild('desc', $fila->description);
}  
@header('Content-type: text/xml');
echo $xml->asXML();
?>

Por Night~

43 de clabLevel



Genero:Masculino  

Geek, Gamer, Otaku

chrome
Citar            
MensajeEscrito el 08 Oct 2011 01:30 pm
Saludos cuando intento hacerlo como dices me da un error y no se exactamente que sera me sale de la siguiente manera:
Error de lectura XML: declaración de texto o XML en un lugar distinto del principio de la entidad
Ubicación: http://localhost/prueba.php
Número de línea 1, columna 2: <?xml version="1.0"?>
-^
me dijiste que agregara <?xml version="1.0"?> pero esactamente donde la agregaria?

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2011 03:30 pm
un xml bien formado tendria que ir asi

Código :

<?xml version="1.0"?>
<data> 
    <row> 
        <hour>11</hour> 
        <merid>am</merid> 
        <desc>hola11</desc>
    </row> 
</data>

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Oct 2011 04:50 pm
si eso es lo que quiero lograr coloque el codigo que tengo a ver si me pueden ayudar prove con el codigo de Night~ pero me esos errores ¿que estoy haciendo mal?

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2011 06:41 pm
Prueba mi código así sin poner nada más antes ni despues de <?php ?>, no estoy seguro de porque no funciona ya que yo tengo una api hecha de esa misma manera y funciona.

Tu haz agregado lo de <?xml version="1.0"?> ? porque en el código que te he puesto no necesitas y ese puede ser el error

Por Night~

43 de clabLevel



Genero:Masculino  

Geek, Gamer, Otaku

chrome
Citar            
MensajeEscrito el 08 Oct 2011 10:31 pm
es que yo tampoco entiendo por que en la parte que me da el error no existe en el archivo puse el codigo tal y cual me do pusiste y cuando lo habro en el navegador que primero lo pruebo asi para ver lo que retorno me dice eso
Error de lectura XML: declaración de texto o XML en un lugar distinto del principio de la entidad
Ubicación: http://localhost/prueba.php
Número de línea 1, columna 2:
<?xml version="1.0"?>
-^
y me marca tal como te puse esa flechita esa parte sera algun error de mi navegador? lo raro es que prove el codigo viejo que postie y me retorno.

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Oct 2011 03:20 am
el navegador te da ese error pero ya viste el codigo fuente generado???
click derecho > ver codigo fuente

ahi vees si hay algo raro en el xml generado , esa es la mejor manera de ver los errores

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Oct 2011 03:57 pm
Ok tuadmin hice lo que me dijiste y esto me sale en el codigo fuente

<?xml version="1.0"?>
<data>
<row>
<hour>10</hour>
<merid>am</merid>
<desc>hola10</desc>

<hour>2</hour>
<merid>pm</merid>
<desc>hola2</desc>

<hour>4</hour>
<merid>pm</merid>
<desc>hola4</desc>
</row>
<row/>
<row/>
</data>

parece que no esta generando bien todo lo extrano es que cuando cierra el primer </row> y lugo sigue asi <row/> <row/>.
ahi esto medio confundido...

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Oct 2011 10:47 pm
Eso de <row/> es porque usa $xml->row->addChild... yo pensé que agregaría las cosas al último row agregado.
Seguiré averiguando de eso pero por mientras si quieres usa así:

Código PHP :

<?php 
include("conexion.php"); //incluimos el archivo conexion.php 
  
    $sql = "SELECT * FROM prueba";   
   
    $result = mysql_query($sql,$Mysql);
$output = '<?xml version="1.0"?><data>';
    while($fila = mysql_fetch_object($result)) 
{ 
$output .= '<row><hour>'.$fila->hour.'</hour><merid>'.$fila->meridiem.'</merid><desc>'.$fila->description.'</desc></row>';
} 
$output .= '</data>';
@header('Content-type: text/xml'); 
echo $output;
?>

No es la manera más eficiente pero bueno.
Si sigue apareciendo el problema de <?xml... fijate si los valores de los resultados tienen caracteres como "<", ">" que no sean permitidos por xml (por problemas de sintaxis)

Por Night~

43 de clabLevel



Genero:Masculino  

Geek, Gamer, Otaku

chrome
Citar            
MensajeEscrito el 12 Oct 2011 01:14 am
el primer código que pusiste debería andar probá agregando esto antes del include:
header ("content-type: text/xml");
con eso debería andar

Por ragnar_ok

8 de clabLevel



Genero:Masculino  

dibujante programador maquetador

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.