Foros del Web » Programando para Internet » PHP »

Funcion insertar datos en xml con php

Estas en el tema de Funcion insertar datos en xml con php en el foro de PHP en Foros del Web. Hola. Tengo la siguiente funcion para insertar datos a un XML con PHP: Código PHP: function  insertar_nodo  (  $nodo  ,  $datos  ,  $fichero  ,  $duplicar  ...
  #1 (permalink)  
Antiguo 04/11/2012, 12:06
 
Fecha de Ingreso: noviembre-2010
Mensajes: 101
Antigüedad: 13 años, 4 meses
Puntos: 0
Funcion insertar datos en xml con php

Hola.
Tengo la siguiente funcion para insertar datos a un XML con PHP:

Código PHP:
function insertar_nodo $nodo $datos $fichero $duplicar $duplicados ){  
  
//Leemos fichero       
 
if(( $xml leer_xml $fichero )) == - ) return - ;       
  
  
//Comprobamos si puede haber       nodos duplicados o no y si los hay       
 
if( $duplicar == $stop buscar_nodo $nodo $duplicados $fichero );       
 else 
$stop ;       
  
  
//Si no hay nodos duplicados o       si puede haberlos, seguimos       
 
if( $stop == ){       
 
//Guardamos todos los datos en       un nuevo nodo       
 
$tag $xml -> addChild $nodo );  
  foreach( 
$datos as $valor $tag -> addChild $valor 'tag' ], $valor 'dato' ]);       
 
//Guardamos el fichero       
 
$xml -> asXML $fichero );       
 }       
 return 
;       

El problema es que si tengo un XML como el siguiente:

Código:
<?xml version='1.0' encoding='UTF-8'?>
<playlist version='1' xmlns='http://xspf.org/ns/0/'>
<trackList>
	<track>
		<location>mp3/you lie.mp3</location>
		<album></album>
		<title>1 - you lie</title>
		<downloads>0</downloads>
	</track>
	<track>
		<location>ve2</location>
		<album>bee</album>
		<title>2 - you lie 2</title>
		<downloads>0</downloads>
	</track>
</trackList>
</playlist>

Para insertar una entrada escribo esto:

Código PHP:
$datos[0]['tag'] = 'location'
$datos[0]['dato'] = $location
$datos[1]['tag'] = 'album'
$datos[1]['dato'] = $album
$datos[2]['tag'] = 'title'
$datos[2]['dato'] = $title
$datos[3]['tag'] = 'downloads'
$datos[3]['dato'] = $downloads;

$duplicados[0]['tag'] = 'location'
$duplicados[0]['dato'] = $location

insertar_nodo("track",$datos,"archivo.xml",1,$location); 
Mi problema es que lo que me inserta, me lo pone entre <playlist> </playlist>
pero no me lo mete dentro de <trackList> </trackList>.

Es decir, es como si al hacerlo funcionar, me diera como resultado lo siguiente:

Código:
<?xml version='1.0' encoding='UTF-8'?>
<playlist version='1' xmlns='http://xspf.org/ns/0/'>
<trackList></trackList>
	<track>
		<location>mp3/I love the way you lie.mp3</location>
		<album>filipines</album>
		<title>1 - I love the way you lie</title>
		<downloads>0</downloads>
	</track>
	<track>
		<location>rihannalove2</location>
		<album>bee</album>
		<title>2 - I love the way you lie 2</title>
		<downloads>0</downloads>
	</track>
</playlist>

Es un poco largo de leer, y creo que tiene facil solución.. pero no la veo.
¿A alguien se le ocurre algo?

de antemano, muchas gracias.
  #2 (permalink)  
Antiguo 04/11/2012, 16:30
 
Fecha de Ingreso: noviembre-2010
Mensajes: 101
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Funcion insertar datos en xml con php

Código PHP:
function insertar_nodo $nodo $datos $fichero $duplicar $duplicados ){   
  
//Leemos fichero        
 
if(( $xml leer_xml $fichero )) == - ) return - ;        
   
  
//Comprobamos si puede haber       nodos duplicados o no y si los hay        
 
if( $duplicar == $stop buscar_nodo $nodo $duplicados $fichero );        
 else 
$stop ;        
   
  
//Si no hay nodos duplicados o       si puede haberlos, seguimos        
 
if( $stop == ){        
 
//Guardamos todos los datos en       un nuevo nodo        
 
$tag2 $xml -> addChild ("<trackList></trackList>"); 
  
$tag $tag2 -> addChild $nodo );  

  foreach( 
$datos as $valor $tag -> addChild $valor 'tag' ], $valor 'dato' ]);        
 
//Guardamos el fichero        
 
$xml -> asXML $fichero );        
 }        
 return 
;        

Se me ha ocurrido poner algo asi:

$tag2 = $xml -> addChild ("<trackList></trackList>");
$tag = $tag2 -> addChild ( $nodo );

pero no funciona... simplemente no aparecen las etiquetas tracklist.
  #3 (permalink)  
Antiguo 04/11/2012, 16:57
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Funcion insertar datos en xml con php

Si estás usando SimpleXML (parece que sí) en addChild() sólo debes especificar el nombre de la etiqueta, no abrirla y cerrarla como lo estás haciendo; revisa el manual: http://www.php.net/manual/en/simplex...t.addchild.php
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: funcion, 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 09:05.