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

incluir XML en un archivo XML

Estas en el tema de incluir XML en un archivo XML en el foro de Programación General en Foros del Web. hola amigos estoy probando con XML y necesito incluir un archivo dentro de otro.. tipo include como PHP o ASP Tengo un XML normalito, para ...
  #1 (permalink)  
Antiguo 15/10/2007, 08:09
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
incluir XML en un archivo XML

hola amigos

estoy probando con XML y necesito incluir un archivo dentro de otro..
tipo include como PHP o ASP

Tengo un XML normalito, para una galeria de fotos, pero justo en la parte donde se colocan las imagenes quiero que este fuera de ese XML

<images>
<category caption="arboles" thumb="arboles.jpg" enabled="true">
<image fullimage="arboles/picture1.jpg" />
<image fullimage="arboles/picture2.jpg" />
<image fullimage="arboles/picture3.jpg"/>
</category>
<images>

esta parte quiero que sea un XML aparte, llamado arboles.xml y el XML general lo incluya como un include

¿podrian ayudarme?
  #2 (permalink)  
Antiguo 15/10/2007, 08:47
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: incluir XML en un archivo XML

En PHP puedes utilizar la siguiente función.
Código PHP:
A simple way to merge two SimpleXML objects.

<?php
/**
* Pumps all child elements of second SimpleXML object into first one.
*
* @param    object      $xml1   SimpleXML object
* @param    object      $xml2   SimpleXML object
* @return   void
*/
function simplexml_merge (SimpleXMLElement &$xml1SimpleXMLElement $xml2)
{
    
// convert SimpleXML objects into DOM ones
    
$dom1 = new DomDocument();
    
$dom2 = new DomDocument();
    
$dom1->loadXML($xml1->asXML());
    
$dom2->loadXML($xml2->asXML());

    
// pull all child elements of second XML
    
$xpath = new domXPath($dom2);
    
$xpathQuery $xpath->query('/*/*');
    for (
$i 0$i $xpathQuery->length$i++)
    {
        
// and pump them into first one
        
$dom1->documentElement->appendChild(
            
$dom1->importNode($xpathQuery->item($i), true));
    }
    
$xml1 simplexml_import_dom($dom1);
}

$xml1 simplexml_load_string('<root><child>child 1</child></root>');
$xml2 simplexml_load_string('<root><child>child 2</child></root>');
simplexml_merge($xml1$xml2);
echo(
$xml1->asXml());
?>

Will output:
<?xml version="1.0"?>
<root>
    <child>child 1</child>
    <child>child 2</child>
</root>
  #3 (permalink)  
Antiguo 15/10/2007, 08:53
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
Re: incluir XML en un archivo XML

Cita:
Iniciado por mount Ver Mensaje
En PHP puedes utilizar la siguiente función.
Código PHP:
A simple way to merge two SimpleXML objects.

<?php
/**
* Pumps all child elements of second SimpleXML object into first one.
*
* @param    object      $xml1   SimpleXML object
* @param    object      $xml2   SimpleXML object
* @return   void
*/
function simplexml_merge (SimpleXMLElement &$xml1SimpleXMLElement $xml2)
{
    
// convert SimpleXML objects into DOM ones
    
$dom1 = new DomDocument();
    
$dom2 = new DomDocument();
    
$dom1->loadXML($xml1->asXML());
    
$dom2->loadXML($xml2->asXML());

    
// pull all child elements of second XML
    
$xpath = new domXPath($dom2);
    
$xpathQuery $xpath->query('/*/*');
    for (
$i 0$i $xpathQuery->length$i++)
    {
        
// and pump them into first one
        
$dom1->documentElement->appendChild(
            
$dom1->importNode($xpathQuery->item($i), true));
    }
    
$xml1 simplexml_import_dom($dom1);
}

$xml1 simplexml_load_string('<root><child>child 1</child></root>');
$xml2 simplexml_load_string('<root><child>child 2</child></root>');
simplexml_merge($xml1$xml2);
echo(
$xml1->asXml());
?>

Will output:
<?xml version="1.0"?>
<root>
    <child>child 1</child>
    <child>child 2</child>
</root>

gracias por tu respuesta..
en realidad no entiendo muy bien eso :D

no se si no me explique bien.. te comento
tengo un archivo XML con mucho contenido
pero hay unas cuantas lineas de ese XML que quiero sea DINAMICO y la idea que he tenido es, que con PHP re-escriba esa parte del XML cada vez que haya una modificacion.

entonces pense que para que re-escribir todo el XML como es solo una parte pequeña, pense que podria crear un xml nuevo con esos cambios y luego incluirlo en el XML grande, tipo include.. pero no encuentro la forma de llamar desde un xml a otro

un saludo. y gracias por tu ayuda
  #4 (permalink)  
Antiguo 17/10/2007, 10:00
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: incluir XML en un archivo XML

Bueno. Yo no conozco otra posibilidad. La única que se me ocurre es la que te presenté: escribir el xml dinámico y luego unirlo al original.
Como ves, esa función toma los dos ficheros xml ($xml1 y $xml2) y devuelve el fichero final que es la suma de los dos.
No se me ocurre otra solución...
  #5 (permalink)  
Antiguo 17/10/2007, 13:48
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
Re: incluir XML en un archivo XML

Cita:
Iniciado por mount Ver Mensaje
Bueno. Yo no conozco otra posibilidad. La única que se me ocurre es la que te presenté: escribir el xml dinámico y luego unirlo al original.
Como ves, esa función toma los dos ficheros xml ($xml1 y $xml2) y devuelve el fichero final que es la suma de los dos.
No se me ocurre otra solución...
gracias mount
no habia probado lo que me comentaste hasta ahora porque no entendia muy bien lo q hacia el caso es que me a servido para resolver el problema.

un saludo.
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 13:37.