es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Generación de XML de PHP, cadena `appendChild()`

Estoy generando un archivo XML a través de PHP y lo estoy haciendo de esta manera:

$dom = new DOMDocument();
$root = $dom->createElement(‘Raíz’);

// algunas definiciones de nodos aquí, etc.
$root->appendChild($producto);
$root->appendChild($cantidad);
$root->appendChild($unidadDeMedida);
$root->appendChild($númeroDeLínea);

$dom->appendChild($root);
$dom->save(‘/algún/directorio/algun-nombre.xml’);

Todo funciona bien hasta que encuentro un problema, cuando llego a la parte en la que necesito agregar, digamos, N nodos hijos. Esto significaba que llamaría a la función appendChild() ‘N’ veces, lo que resultó en un script PHP muy largo que es un poco difícil de mantener.

Sé que podemos dividir el script principal en archivos más pequeños para un mejor mantenimiento, pero ¿hay mejores formas de simplemente ‘encadenar’ las llamadas a ‘appendChild’ para que se guarden como muchas líneas escritas o hay una función algo mágica como ‘appendChildren’ disponible?

Esta es la primera vez que uso la clase DOMDocument(), espero que alguien pueda iluminarme.

Gracias

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás buscando una forma de reducir la cantidad de código que necesitas escribir para agregar múltiples nodos hijo a tu archivo XML. Desafortunadamente, no hay una función incorporada para hacer esto, pero hay algunas formas en las que puedes reducir la cantidad de código que necesitas escribir.

    Una forma es usar un bucle para iterar a través de los nodos que necesitas agregar. Por ejemplo, si tienes un arreglo de nodos que necesitas agregar, podrías usar un bucle foreach para iterar a través del arreglo y agregar cada nodo:


    foreach ($nodes as $node) {
    $root->appendChild($node);
    }

    Otra forma es usar el método appendChild() para agregar múltiples nodos al mismo tiempo. Esto se puede hacer pasando un arreglo de nodos al método appendChild():


    $root->appendChild($nodes);

    Finalmente, también podrías usar el método append() para agregar múltiples nodos al mismo tiempo. Esto se puede hacer pasando un arreglo de nodos al método append():


    $root->append($nodes);

    ¡Espero que esto te sea útil!

Comments are closed.