Seguindo co uso da clase SimpleXML (http://es.php.net/manual/es/book.simplexml.php) tamén se pode engadir de xeito sinxelo un novo nodo a un XML. Para isto temos que crear un obxeto da clase SimpleXMLElement, inicializándoo ben cun String que conteña o XML (new SimpleXMLElement(string) ) ou ben co nome do ficheiro que conteña o XML ( new SimpleXMLElement(ficheiro,NULL,True) ). Tamén dispoñemos de dúas funcións que obteñen o mesmo obxeto (simplexml_load_string(string) e simplexml_load_file(ficheiroXML)).

Unha vez obtido o obxeto SimpleXMLElement, podemos acceder o nome de cada nodo, os seus atributos e os seus sobnodos cos métodos do obxeto (e con estes métodos situarnos no nodo onde queremos engadir o novo subnodo):

  • SimpleXMLElement->getName() para obter o nome do nodo
  • SimpleXMLElement->attributes() para obter un array cos atributos do nodo
  • SimpleXMLElement->children() para obter un array cos subnodos dun nodo dado
  • E engadir un novo nodo unha vez que estemos situado no punto axeitado do XML:

  • SimpleXMLElement->addChild(nome_nodo,valor_nodo) : Engade un novo nodo no punto indicado. Dito nodo terá unha etiqueta cuxo nome será o indicado no primeiro parámetro e se se indica segundo parámetro, ese será o valor do nodo.
  • SimpleXMLElement->addAttribute(nome_atributo,valor_atributo) : Engadelle o nodo actual un atributo co nome indicado no primeiro parámetro e o valor indicado no segundo.
  • Un exemplo de como engadir un nodo a un ficheiro XML e velo no navegador:

    $libraria = new SimpleXMLElement('ficheiro.xml',NULL,true);
    
    $novo_nodo = $libraria->addChild("libro");
    $novo_nodo->addAttribute('isbn','0812550706');
    $novo_nodo->addChild('titulo','Novo libro');
    $novo_nodo->addChild('autor','Novo autor');
    $novo_nodo->addChild('editor','Novo editor');
    
    echo $novo_nodo->asXML();