Tengo un archivo XML que se parece a esto:cómo anexar a un archivo XML con PHP preferiblemente con SimpleXML
<?xml version="1.0" encoding="utf-8"?>
<data>
<config>
</config>
<galleries>
// We have loads of these <gallery>
<gallery>
<name>Name_Here</name>
<filepath>filepath/file.txt</filepath>
<thumb>filepath/thumb.png</thumb>
</gallery>
</galleries>
</data>
He estado tratando de averiguar cómo anexar otra galería <> a mi XML arriba archivo. Intenté usar el archivo simplex pero no pude hacerlo funcionar, así que probé este answer y también un bunch en stackoverflow. Pero simplemente no puedo hacer que funcione.
Puedo leer fácilmente un archivo xml y obtener toda la información que necesito, pero necesito poder añadirle una etiqueta de galería. El código siguiente no funciona y, cuando lo hace, solo puedo insertar 1 elemento, y lo inserta 3 veces, no entiendo esto.
$data = 'xml/config.xml';
// Load document
$xml = new DOMDocument;
$xml->load($data); #load data into the element
$xpath = new DOMXPath($xml);
$results = $xpath->query('/data/galleries');
$gallery_node = $results->item(0);
$name_node = $xml->createElement('name');
$name_text = $xml->createTextNode('nametext');
$name_node = $name_node->appendChild($name_text);
$gallery_node->appendChild($name_node);
echo $xml->save($data);
He tenido un montón de intentos fallidos en esto, esto debería ser tan fácil. Básicamente, quiero agregar una galería con childs nombre filepath y thumb a este mismo archivo (xml/config.php).
Como dije, lo hice funcionar, pero no está formateado y no tiene la etiqueta de la galería.
Pregunta
¿Cómo se inserta otra galería <> (con niños) en el archivo XML anterior?
Preferiblemente incluso utilizando simplexml
¡Esto funciona! pero lo emite 3 veces en mi xml, ¿alguna idea de por qué haría esto? produce 3 juegos de y niños en la misma línea. ¿Lo hizo con mi script anterior también? ¿alguna pista? –
Anil
Probablemente estás haciendo algo mal en un bucle. Nada de lo que hayas mostrado, o que haya dado, repetirá el elemento de la galería tres veces. – salathe