Modifier la structure
L'arborescence construite dans le dom à partir d'un document xml peut être modifiée en cours de traitement.
Il est possible d'ajouter, de remplacer ou de supprimer un élément ou une branche de l'arborescence.

Supprimer

La méthode remove() sans argument supprime l'élément actuellement pointé.
On peut pointer sur un élément avec la méthode at() associée à une chemin (une chaîne de sous-éléments) ou associer directement la méthode remove() à un chemin.

Exemple de suppression: include "libdom.sol"

xml
vehicles
   truck name="xxx"
     fret "2000"
     /fret
   /truck
   ships
      destroyer name="pacific"
      /destroyer
       cargo name="panama"
       /cargo
    /ships
/xml

dom d
d.build("vehicles")
d.ships.remove()
d.display()
Affiche: > xml vehicles
   truck name="xxx"
     fret
        "2000"
     /fret
   /truck
   /xml


Insérer

Pour insérer un élément, ou une branche si cet élément contient des sous-éléments, on utilise les méthodes:
- setNext(xnode)
  Ajoute un successeur à l'élément actuellement pointé.
- setChild(xnode)
  Ajoute un sous-élément à l'élément actuellement pointé;

Dans le cas setNext(), le successeur de l'élément pointé devient le successeur de l'élément ajouté.

Dans le cas setChild(), si l'élément pointé à déja un sous-élément, l'élément ajouté le remplace comme sous-élément et il devient successeur de l'élément ajouté.

Pour pouvoir insérer un élément, il le prendre dans un document xml.
Au besoin on va créer ce document pour définir l'élément à ajouter.
Puis la méthode getNode(), sans argument, va pointer sur cet élément qui pourra être inséré dans le même document ou dans un autre.


Exemple d'insertion:
- On reprend le dom précédent, modifié;
- on crée un nouvel élément dans une structure xml,
- on place celle-ci dans un dom,
- on pointe sur l'élément que l'on prend par getNode()
- on pointer sur un élément et setNext() ajoute en successeur.
xml morevehicles
  plane name="808"
     fret
        "15000"
     /fret
   /plane
/xml

dom d2
d.build("morevehicles")
d.truck.at()
d.setNext(d2.plane.getNode())
d.display()
Affiche: > xml vehicles
   truck name="xxx"
     fret
        "2000"
     /fret
   /truck
   plane name="808"
     fret
        "15000"
     /fret
   /plane
  / xml

 Exercices
1) On reprend le document dans l'état final, ci-dessus.
On veut ajouter un sous-élément à l'élément plane.
- nom d'élément: country
- contenu: india
Créez cet élément et ajoutez-le dans le dom final ci-dessus.
Il vous faut réécrire le contenu de la case noire ci-dessus dans un source.

Réponse