Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/11/2012, 12:06
motorinapronto
 
Fecha de Ingreso: noviembre-2010
Mensajes: 101
Antigüedad: 15 años, 11 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 )) == - 1 ) return - 1 ;       
  
  
//Comprobamos si puede haber       nodos duplicados o no y si los hay       
 
if( $duplicar == 0 ) $stop = buscar_nodo ( $nodo , $duplicados , $fichero );       
 else 
$stop = 0 ;       
  
  
//Si no hay nodos duplicados o       si puede haberlos, seguimos       
 
if( $stop == 0 ){       
 
//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 
0 ;       
} 
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.