Foros del Web » Programando para Internet » PHP »

Crear archivos XML con PHP

Estas en el tema de Crear archivos XML con PHP en el foro de PHP en Foros del Web. Hola, estoy tratando de hacer un script para crear archivos XML. Este es mi script: Código PHP: require_once  './sql/ConsultasSQL.php' ; require_once  './sql/clases/Pais.php' ; $pais  = new  ...
  #1 (permalink)  
Antiguo 15/11/2011, 17:47
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Crear archivos XML con PHP

Hola, estoy tratando de hacer un script para crear archivos XML. Este es mi script:

Código PHP:
require_once './sql/ConsultasSQL.php';
require_once 
'./sql/clases/Pais.php';

$pais = new Pais();
$con = new ConsultasSQL();
$lista $con->getListaPaises(" ");
$xml = new SimpleXMLElement('<paisGeneral></paisGeneral>');

foreach (
$lista as $pais){
    
$xml->addChild('cuerpo');
    
$xml->cuerpo->addChild('nombrePais',$pais->getNombrePais());
    
$xml->cuerpo->addChild('intCantidadMercancia',$pais->getCantidadMercancias());
    
$xml->cuerpo->addChild('fobItem',$pais->getFobItem());
    
$xml->cuerpo->addChild('cifItem',$pais->getCifItem());
    
$xml->cuerpo->addChild('fleteItem',$pais->getFleteItem());
    
$xml->cuerpo->addChild('seguroItem',$pais->getSeguroItem());
}
@
header('Content-type: text/xml');
echo 
$xml->saveXML('./xml/test.xml'); 
Pero solo consigo un error que dice:

Error de lectura XML: error de sintaxis
Ubicación: http://localhost/aduana/xml.php
Número de línea 1, columna 1:

De antemano muchas gracias :D
  #2 (permalink)  
Antiguo 15/11/2011, 17:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear archivos XML con PHP

Es posible que el XML esté mal generado, ¿cual es el resultado?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/11/2011, 18:00
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Crear archivos XML con PHP

Cuando lo ejecuto, solo aprece ese mensaje. De igual modo se genera el archivo, y es este:

Código PHP:
<paisGeneral>
<
cuerpo>
<
nombrePais>zona franca iquique</nombrePais>
<
intCantidadMercancia>543530100</intCantidadMercancia>
<
fobItem>2581666</fobItem>
<
cifItem>338614</cifItem>
<
fleteItem>129084</fleteItem>
<
seguroItem>51633</seguroItem>
</
cuerpo>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
<
cuerpo/>
</
paisGeneral
  #4 (permalink)  
Antiguo 15/11/2011, 18:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear archivos XML con PHP

¿Y según tu, está bien o mal generado el XML?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 15/11/2011, 18:20
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Crear archivos XML con PHP

Obviamente mal, y la pregunta no es si esta mal o no. Es ¿por que?, si supiera no preguntaria :O

Incluso lo deje asi:

Código PHP:
$pais = new Pais();
$con = new ConsultasSQL();
$lista $con->getListaPaises(" ");
$xml = new SimpleXMLElement('<paisGeneral></paisGeneral>');

$xml->addChild('cuerpo');
foreach (
$lista as $pais){
    
$xml->cuerpo->addChild('nombrePais',$pais->getNombrePais());
    
$xml->cuerpo->addChild('intCantidadMercancia',$pais->getCantidadMercancias());
    
$xml->cuerpo->addChild('fobItem',$pais->getFobItem());
    
$xml->cuerpo->addChild('cifItem',$pais->getCifItem());
    
$xml->cuerpo->addChild('fleteItem',$pais->getFleteItem());
    
$xml->cuerpo->addChild('seguroItem',$pais->getSeguroItem());
}
@
header('Content-type: text/xml');
echo 
$xml->saveXML('./xml/test.xml'); 
Lo que devuelve un xml mejor formado, algo asi:

<cuerpo>
<paisGeneral>
<nombrePais>zona franca iquique</nombrePais>
<intCantidadMercancia>420121200</intCantidadMercancia>
<fobItem>451176</fobItem>
<cifItem>3183</cifItem>
<fleteItem>22559</fleteItem>
<seguroItem>9024</seguroItem>
</cuerpo>
</paisGeneral>

Pero sigue mostrando el error apesar de haber creado el archivo.

Última edición por Myl; 15/11/2011 a las 18:25
  #6 (permalink)  
Antiguo 15/11/2011, 18:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear archivos XML con PHP

Si no me equivoco, y espero equivocarme, la primer linea de un XML debe comenzar siempre con la "marca" especifica del mismo.

Cita:
<?xml version="1.0"?>
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 15/11/2011, 18:32
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Crear archivos XML con PHP

Si miro el codigo fuente del XML creado, tal etiqueta si aparece :D
  #8 (permalink)  
Antiguo 15/11/2011, 19:03
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Crear archivos XML con PHP

¿Y entonces por qué no posteas el codigo generado completo?
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #9 (permalink)  
Antiguo 15/11/2011, 19:16
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Crear archivos XML con PHP

No me deja ponerlo completo, por eso los corto, trato de resumirlos.

Pero es algo mas o menos asi:

PHP:
Código PHP:
$pais = new Pais();
$con = new ConsultasSQL();
$lista $con->getListaPaises(" ");
$xml = new SimpleXMLElement('<paisGeneral></paisGeneral>');

$xml->addChild('cuerpo');
foreach (
$lista as $pais){
    
$xml->cuerpo->addChild('nombrePais',htmlspecialchars(utf8_encode($pais->getNombrePais())));
    
$xml->cuerpo->addChild('intCantidadMercancia',htmlspecialchars(utf8_encode($pais->getCantidadMercancias())));
    
$xml->cuerpo->addChild('fobItem',htmlspecialchars(utf8_encode($pais->getFobItem())));
    
$xml->cuerpo->addChild('cifItem',htmlspecialchars(utf8_encode($pais->getCifItem())));
    
$xml->cuerpo->addChild('fleteItem',htmlspecialchars(utf8_encode($pais->getFleteItem())));
    
$xml->cuerpo->addChild('seguroItem',htmlspecialchars(utf8_encode($pais->getSeguroItem())));
}
@
header('Content-type: text/xml');
$xml->asXML('./xml/test.xml'); 
Lo que devuelve algo mas o menos asi:

Código PHP:
<paisGeneral>
<
cuerpo>
<
nombrePais>alemania</nombrePais><intCantidadMercancia>42767109132</intCantidadMercancia>
<
fobItem>3506876638</fobItem>
<
cifItem>188104385802</cifItem>
<
fleteItem>158252517</fleteItem>
<
seguroItem>15846623</seguroItem>
<
nombrePais>vietnam</nombrePais>
<
intCantidadMercancia>1647915739</intCantidadMercancia>
<
fobItem>189684221</fobItem>
<
cifItem>266040864</cifItem>
<
fleteItem>12935544</fleteItem>
<
seguroItem>365699</seguroItem>
<
nombrePais>zona franca iquique</nombrePais><intCantidadMercancia>420121200</intCantidadMercancia>
<
fobItem>451176</fobItem>
<
cifItem>3183</cifItem>
<
fleteItem>22559</fleteItem>
<
seguroItem>9024</seguroItem>
</
cuerpo>
</
paisGeneral
Con un codigo fuente asi:
Código PHP:
<?xml version="1.0"?>
<paisGeneral><cuerpo><nombrePais>alemania</nombrePais><intCantidadMercancia>42767109132</intCantidadMercancia><fobItem>3506876638</fobItem><cifItem>188104385802</cifItem><fleteItem>158252517</fleteItem><seguroItem>15846623</seguroItem></cuerpo>
</paisGeneral>
Como he dicho, apesar de crear el archivo en el lugar que se le indica, muestra un error al ajectutar el codigo.
  #10 (permalink)  
Antiguo 15/11/2011, 19:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear archivos XML con PHP

Lo curioso del mensaje de error que da al ver el XML es que sucede en la primer linea, en el primer carácter.

Es posible que el script original (el .php) este guardado con BOM, o algo así, porque de otra forma el error de ninguna forma es de PHP sino del XML generado.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 15/11/2011, 19:23
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Crear archivos XML con PHP

No entiendo muy bien eso del BOM :c, siguire viendo, haber si logro arreglarlo.
Gracias
  #12 (permalink)  
Antiguo 15/11/2011, 21:21
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Crear archivos XML con PHP

Símplemente codifica tu archivo a UTF-8 sin BOM, ésta opción la traen los editores de código, por ejemplo Notepad++
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: sql, xml
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 23:41.