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.