• Jueves 14 de Noviembre de 2024, 23:15

Autor Tema:  Generar Xml Desde Php  (Leído 5250 veces)

sherryl

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Generar Xml Desde Php
« en: Martes 5 de Junio de 2007, 14:54 »
0
Hola...
Estoy tratando de generar una galeria de imágenes por cada cierta noticia, para esto utilizo un script que reescribe el flash...lo que quisiera es generar el xml genéricamente por cada noticia. Para lo cual almaceno en una variable el archivo xml.. algo así:

$archivoXML = "<?xml version='1.0' encoding='UTF-8'?>
<gallery base = '' background = '#FFFFFF' banner = '#285E8C' text = '#6E6E6E' link = '#018888' alink = '#FFFFFF' vlink = '#3ED0D0' date = ''>
<sitename></sitename>
<photographer></photographer>
<contactinfo></contactinfo>
<email></email>
<security><![CDATA[]]> </security>
<banner font = 'Helvetica' fontsize = '3' color =  '#285E8C'> </banner>
<thumbnail base ='galerias/thumbnails/' font = 'Helvetica' fontsize = '4' color = '#285E8C' border = '0' rows = '3' col = '5'> </thumbnail>
<large base ='galerias/images/' font = 'Helvetica' fontsize = '3' color = '#285E8C' border = '0'> </large>
<images id = 'images'>"....;

luego genero un ciclo para generar los nombres, anchos y demás características propias de las imágenes de cada noticia, las cuales son léidas desde la base de datos...y se concateno a esta variable.

El problema aparece cuando trato de generar el xml
es decir cuando hago
$XML = domxml_open_mem($archivoXML);
aquí ya me aparece un error..he mirardo mi php el cual es versión 5 y esta librería no se encuentra en comentario.

También he tratado de generar documentos XML, usando:
$documento = new DOMDocument();
$documento ->loadXML($archivoXML);

para lo cual pongo la siguiente clase
class DOMDocument
{
   bool loadXML(string source[,int options])
}

pero solo con esta ya aparece error..No sé si esto no se pueda hacer y esté jugando con cosas que ya están hechas y estoy mal enfocada.- Agradezco asesoría de como generar el xml dinámicamente para efectos del administrador de las noticias porq cuand se genera el xml estáticamente funciona a las mil maravillas, pero es engorroso para usuarios básicos de internet...Tampoco sé si me hace falta algun archivo que deba incluir en fin... agradezco la ayuda..
Gracias, lamento la extensión de esta discusión..

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Generar Xml Desde Php
« Respuesta #1 en: Martes 5 de Junio de 2007, 15:36 »
0
Hola Sherryl:

Mira, por un lado las funciones DOM XML, no son compatibles en php5 (o bien funcionan mal, depende de la versión) , por lo cual debes usar las funciones DOM (en tu ejemplo, es el segundo caso).

Por otro lado, el manejo del formato XML tanto con php como con javascript hace doler la cabeza hasta que le agarras la mano. Los parsers no están aún bien hecho, por lo cual algo que está bien, suele dar error. Te recomiendo que te armes de paciencia y vayas agregando nodos de a poco. Para empezar te recomendaría sacar el CDATA.
Igualmente es raro que el parser no te de ningún tipo de error, tal vez considere que el xml no está bien formado.

Lamentablemente no tengo php5 instalado en el trabajo y no puedo probar tu código para decirte donde falla.

Por último, si ves que le encuentras la vuelta, intenta con el proceso inverso, crea el XML con las funciones de php, agregando nodo por nodo, y luego exportarlo a xml, y usa ese resultado en tu código, en este caso es 100% seguro de que dicho resultado te sirva.


Saludos.
Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

sherryl

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Generar Xml Desde Php
« Respuesta #2 en: Martes 5 de Junio de 2007, 15:54 »
0
Mil Gracias..-

Me gustan los retos y este es uno pequeño, ahora bien, de xml creo tener conocimmientos muy básicos, no se que etiquetas se puedan usar para invocar o incrustar php. Podrías enviarme algún link o tutorial de como construir el archivo xml con php, ya que debo leer las características de la galería con php..o darme algun ejemplo de como impletarlo??

Nuevamente Gracias..

sherryl

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Generar Xml Desde Php
« Respuesta #3 en: Martes 5 de Junio de 2007, 16:18 »
0
Hola de nuevo Altareum.

Traté de probar lo que me recomendaste de ir anidando los nodos poco a poco pero igual me da error, es como si no reconociera ninguna etiqueta xml desde php. Esto fue lo que hice...

<?php
class DOMDocument
{
   bool loadXML(string source[,int options])
}
$inicial = "<?xml version='1.0' encoding='UTF-8'?>";
$documento = new DOMDocument();
$documento ->loadXML($inicial);
echo $documento->saveXML();
?>

y el error es:

Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in ......... noticia.php on line 146

Como si no reconciera nada de lo que hay dentro de la cadena, no sé si me falta incluir alguna clase o algo asi... ó tal vez hay que jugar con las comillas " " ó ' ' .. en fin..

Mil gracias de antemano...

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Generar Xml Desde Php
« Respuesta #4 en: Martes 5 de Junio de 2007, 17:10 »
0
sherryl, sólo por curiosidad intenta poner esta línea así:

$inicial = "<"."?xml version='1.0' encoding='UTF-8'?>";

Recuerda que los scripts de php pueden iniciarse con <?php y <?, aunque si bien depende de la configuración del php.ini, la mayoría de las veces el intérprete de php identifica el inicio de un xml (<?) cómo el inicio de un php.


Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

sherryl

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Generar Xml Desde Php
« Respuesta #5 en: Miércoles 6 de Junio de 2007, 02:31 »
0
Hola de nuevo..

He probado el código que me propusiste, colocar así:

$inicial = "<"."?xml version='1.0' encoding='UTF-8'?>";

y me dá el siguiente error

    
Parse error: parse error, unexpected T_STRING, expecting T_FUNCTION in ..... on line 125

En donde se encuentra la siguiente línea de código..

bool loadXML(string source[,int options])...

No sé que mas cualquier otra idea, mil gracias

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Generar Xml Desde Php
« Respuesta #6 en: Miércoles 6 de Junio de 2007, 14:16 »
0
;) .... Ese error simplemente indica que tienes un error de sintaxis. Escribe la fracción del código que estás usando para poder ver donde puede estar...

Igualmente supongo que no estarás poniendo esto:
Código: Text
  1. class DOMDocument
  2. {
  3. bool loadXML(string source[,int options])
  4. }
  5.  
Directamente en tu código, si es así, eso está mal.....


Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

sherryl

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Generar Xml Desde Php
« Respuesta #7 en: Miércoles 6 de Junio de 2007, 15:10 »
0
Altareum..

Disculpa mi ignorancia, pero creo que sip, estoy colocando el código tal cual...no sé cómo se dede colocar pero el código es:

Código: Text
  1.  
  2. &#60;?php
  3.   class DOMDocument {
  4.     [B]DOMElement createElement ( string name [, string value] )[/B]
  5. }
  6.   &#036;inicial = &#34;&#60;&#34;.&#34;?xml version='1.0' encoding='UTF-8'?&#62;&#34;;
  7.   &#036;documento = new DOMDocument();
  8.   &#036;documento -&#62;loadXML(&#036;inicial);
  9.   echo &#036;documento-&#62;saveXML();
  10. ?&#62;
  11.  
  12.  

ó

Código: Text
  1.  
  2. &#60;?php
  3. class DOMDocument
  4. {
  5.   [B]bool loadXML(string source[,int options])[/B]
  6. }
  7. &#036;inicial = &#34;&#60;&#34;.&#34;?xml version='1.0' encoding='UTF-8'?&#62;&#34;;
  8. &#036;documento = new DOMDocument();
  9. &#036;documento -&#62;loadXML(&#036;inicial);
  10. echo &#036;documento-&#62;saveXML();?&#62;
  11.  
  12.  

Con cualquiera de los dos el error sigue siendo el mismo

Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in ......... on line 145 la cual corresponde en ambos casos al código q aparece en negrilla.

Gracias por la paciencia

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Generar Xml Desde Php
« Respuesta #8 en: Miércoles 6 de Junio de 2007, 15:27 »
0
Citar
Gracias por la paciencia
De nada...

Pues, dicho fragmento de código no debes usarlo. Supongo que lo copiaste del manual de php.
Eso es lo que se llama ría especificación, es decir, que te muestra como está compuesto (en este caso la clase), qué parámetros debes pasarle, cuales son opcionales y cuales no.


Sólo debes usar lo siguiente:
[/CODE]$inicial = "<"."?xml version='1.0' encoding='UTF-8'?>";
  $documento = new DOMDocument();
  $documento ->loadXML($inicial);
  echo $documento->saveXML();
Código: Text
  1.  
  2.  
  3. Mientras, que esto, debes sacarlo:
  4.  
  5.  
class DOMDocument {
    DOMElement createElement ( string name [, string value] )
}[CODE]

Cualquier cosa, mandame un mensaje privado y lo seguimos por allí, ya que creo se estoy desvirtuando el post  :P .

Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

sherryl

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Generar Xml Desde Php
« Respuesta #9 en: Miércoles 6 de Junio de 2007, 15:48 »
0
Altareum...

Tienes razón lo he probado y funciona a las mil maravilla... ahora bien una duda más.. con la instrucción..

echo $documento->saveXML();

se imprime en pantalla... y quiero que este se lea desde el parámetro que sobreescribe el flash, existe la forma de evitar esto o q lo guarde en un sitio determinado para q el flash lo pueda leer?...

Gracias...
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

sherryl

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Generar Xml Desde Php
« Respuesta #10 en: Miércoles 6 de Junio de 2007, 18:10 »
0
Hola de nuevo

Altereum..

He probado esto

Código: Text
  1.  
  2. &#60;script type=&#34;text/javascript&#34;&#62;
  3. var xml:XML = new XML();
  4. var myFlashObject = new FlashObject(&#34;galerias/gallery.swf&#34;, &#34;gallery&#34;, &#34;500&#34;, &#34;399&#34;, 6, &#34;#ffffff&#34;);
  5. myFlashObject.addParam(&#34;scale&#34;, &#34;noscale&#34;);
  6. myFlashObject.addVariable(&#34;request&#34;, getQueryParamValue(&#34;image&#34;));
  7. myFlashObject.addVariable(&#34;photosXmlFile&#34;,xml.load(&#34;galerias/&#60;?php echo &#036;notXml;?&#62;&#34;);
  8. myFlashObject.addVariable(&#34;configXmlFile&#34;, &#34;galerias/galleryconfig.xml&#34;);
  9. myFlashObject.write();
  10. &#60;/script&#62;
  11.  

Lo que tengo en $notXml es el archivo php con el que generé el xml
Pero igual no hace nada... aunque logré imprimir el archivo y el xml se generó perfecto...No sé que más probar para cargar el archivo...

De nuevo mil gracias, en especial por la paciencia..

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Generar Xml Desde Php
« Respuesta #11 en: Jueves 7 de Junio de 2007, 15:58 »
0
Para usarlo de esa forma, agrega esto a tu código:

Código: Text
  1.  
  2. header (&#34;Content-Type: text/xml&#34;);
  3. .....
  4. echo &#036;documento-&#62;saveXML();
  5.  
  6.  


De esta forma, el flash cuando busque el archivo lo reconocerá como archivo xml y no como texto plano. De hecho puedes provar la diferencia abriéndolo en el navegador.

Ten cuidado de que no se imprima nada antes de la función header, sino te dará un error.


Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

sherryl

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Generar Xml Desde Php
« Respuesta #12 en: Jueves 7 de Junio de 2007, 16:43 »
0
Espero me tengas paciencia, la mía a raticos escasea...

Nada logro imprimirlo y si el xml se genera a las mil maravillas con la cabecera pero ahora el flash no hace nada....solo se pinta un recuadro en negro y no se visualizan las imágenes...

Podría obtener tu e-mail? mi e-mail es: titi + mi nick en gmail..Gracias.!