[eside-ghost] formulario PHP para añadir datos en XML -- era ( formulario php para subir archivos via FTP )
altern
altern2 en gmail.com
Jue Mar 27 09:35:48 CET 2008
Alfredo Beaumont(e)k dio:
> Az, 2008eko Marren 26a(e)an, altern(e)k idatzi zuen:
> [...]
>> No me empapo muy bien del PHP pq estoy acostumbrado a usar Python y se
>> me hace un poco raro leer la syntasis de php en los ejemplos que
>> encuentro. Esto es mas o menos el codigo que estoy probando ahora. Casca
>> pq $markers no tiene un metodo appendChild() al ser un objeto tipo
>> DOMNodeList
>>
>>
>> $doc = new DOMDocument();
>> $doc->load( 'data.xml' );
>> $doc->formatOutput = true;
>>
>> $markers = $doc->getElementsByTagName("markers")
>>
>> $m = $doc->createElement( "marker" );
>>
>> $lat = $doc->createElement( "nombre" );
>> $lat->appendChild( $doc->createTextNode( "xxxnombre" ) );
>> $m->appendChild( $lat );
>>
>> $markers.appendChild($m); // **Aqui casca!!****
>>
>> $doc->saveXML();
>> $doc->save("data.xml")
>
> No se si lo he entendido muy bien, pero si lo que quieres es ir añadiendo
> elementos de tipo 'marker', tal como parece indicar el ejemplo, lo único que
> necesitas es convertir el DOMNodeList en un DOMElement. En este caso es
> trivial, ya que el DOMNodeList sólo tiene un elemento:
>
> $markers_element = $markers->item(0);
> $markers_element->appendChild(0);
>
> Si he entendido bien lo que necesitas, con esto lo tendrías.
Si, esa es la idea, añadir nuevos <marker> dentro del <markers>
pero no me funciona
$doc = new DOMDocument();
$doc->load( 'data.xml' );
$doc->formatOutput = true;
$markers= $doc->getElementsByTagName("markers");
$last = $markers->item(0); //pq ahora solo hay un item
print_r($last);
$m = $doc->createElement( "marker" );
$lat = $doc->createElement( "name" );
$lat->appendChild( $doc->createTextNode( "namedataxxx" ) );
$m->appendChild( $lat );
$last.appendChild($m); /* **CASCA AQUI** */
$doc->saveXML();
$doc->save("data.xml")
el print_r me dice que es un DOMElement hasta ahi bien pero el error es
Fatal error: Call to undefined function appendChild()
He mirado en la documentacion de PHP y el objetp DOMElement no tiene
este metodo, solo los DOMNode lo tienen.
Tengo que encontrar una forma de que $last sea un DOMNode para poder
usar appendChild() o alguna otra forma
Más información sobre la lista de distribución eside-ghost