Foros del Web » Programando para Internet » PHP »

agregar un tag en un XML

Estas en el tema de agregar un tag en un XML en el foro de PHP en Foros del Web. Hola que tal, me podrían auxiliar con algo tan sencillo, tengo un archivo Xml con la siguiente información: Código: <?xml version="1.0" encoding="utf-8" ?> <productos> <articulos> ...
  #1 (permalink)  
Antiguo 15/10/2009, 14:26
 
Fecha de Ingreso: julio-2008
Mensajes: 116
Antigüedad: 15 años, 9 meses
Puntos: 1
Pregunta agregar un tag en un XML

Hola que tal, me podrían auxiliar con algo tan sencillo, tengo un archivo Xml con la siguiente información:

Código:
<?xml version="1.0" encoding="utf-8" ?>

<productos>

        <articulos>
                        <item>
                                   <code>123</code>
                                   <name>mouse</name>
                        </item>
                        <item>
                                   <code>124</code>
                                   <name>monitor</name>
                        </item>
                        <item>
                                   <code>125</code>
                                   <name>teclado</name>
                        </item>
        </articulos>
</productos>

lo que pretendo hacer es estar agregando un nuevo elemento dentro de articulos, me podrían dar una orientada con el uso del DOM. de antemano muchas gracias


con el uso del simpleXml tengo esto:

Código PHP:

$productos
= new SimpleXMLElement('salida.xml'nulltrue);

$item$productos->addChild('item');  
$item->addChild('code'"888");  
$item->addChild('name''pantalla');
echo 
$productos->asXML();
$productos->asXML('salida2.xml'); 
Lo anterior si lo agrega pero despues de articulos y yo quiero que este dentro de articulos, lo que hace es:

Código:
<?xml version="1.0" encoding="utf-8" ?>

<productos>

        <articulos>
                        <item>
                                   <code>123</code>
                                   <name>mouse</name>
                        </item>
                        <item>
                                   <code>124</code>
                                   <name>monitor</name>
                        </item>
                        <item>
                                   <code>125</code>
                                   <name>teclado</name>
                        </item>
        </articulos>
        <item>
                  <code>888</code>
                  <name>pantalla</name>
        </item>
</productos>
de antemano mil gracias!!!

Última edición por Aioros-jms; 15/10/2009 a las 14:44
  #2 (permalink)  
Antiguo 15/10/2009, 16:12
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: agregar un tag en un XML

Hola
Prueba cambiando esto
$item= $productos->addChild('item');
por esto
$item= $productos->articulos->addChild('item');
Nos comentas

Saludos
  #3 (permalink)  
Antiguo 16/10/2009, 10:12
 
Fecha de Ingreso: julio-2008
Mensajes: 116
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: agregar un tag en un XML

Hola que tal!!!!

Muchas gracias era exactamente lo que necesitaba!!!!, bueno solo una cosita mas, como le indico que lo guarde con la identación, ya que lo agrega pero en una solo linea todo, por ejemplo:

Código:
<?xml version="1.0" encoding="utf-8" ?>

<productos>

        <articulos>
                        <item>
                                   <code>123</code>
                                   <name>mouse</name>
                        </item>
                        <item>
                                   <code>124</code>
                                   <name>monitor</name>
                        </item>
                        <item>
                                   <code>125</code>
                                   <name>teclado</name>
                        </item>
         <item><code>888</code><name>pantalla</name></item></articulos>
        
</productos>
y quiero lo lo muestre asi:

Código:
<?xml version="1.0" encoding="utf-8" ?>

<productos>

        <articulos>
                        <item>
                                   <code>123</code>
                                   <name>mouse</name>
                        </item>
                        <item>
                                   <code>124</code>
                                   <name>monitor</name>
                        </item>
                        <item>
                                   <code>125</code>
                                   <name>teclado</name>
                        </item>
                         <item>
                                   <code>888</code>
                                   <name>pantalla</name>
                         </item>
             </articulos>
        
</productos>

Muchas gracias!!!!

Saludos
  #4 (permalink)  
Antiguo 16/10/2009, 16:59
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: agregar un tag en un XML

Hola
Pues me percate de eso ayer, pero revisando no encontre nada que indentara, no se si aquí tal vez haya algo
Otra que se me ocurre es guardar el xml, y luego abrirlo con funciones
de archivo (fopen, etc) y tratarlo, porque no se si haya otra manera,
bueno, saludos
  #5 (permalink)  
Antiguo 17/10/2009, 14:12
 
Fecha de Ingreso: julio-2008
Mensajes: 116
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: agregar un tag en un XML

Hola que tal!!!

se me habia ocurrido algo, y si funciono, fue cargar el xml una vez creada con el simpleXML, mediante el dom y guardarla, quedo de la siguiente forma.

Código PHP:

            $doc 
= new DOMDocument('1.0','utf-8');
            
$doc ->preserveWhiteSpace false;
            
$doc->load('salida2.xml');
            
$doc->formatOutput true;
            echo 
$doc->save('salida2.xml'); 
Saludos, muchas gracias por la atención!!!

fuente obtenida Aqui

Última edición por Aioros-jms; 17/10/2009 a las 14:18
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 15:58.