Dilib, module SxmlNode, fonctions c, manipulations d'arbres
|
Cette page introduit les fonctions permettant la manipulation d'arbres dans les Stream Xml.
Liste des modules Dilib
Module SxmlNode
|
Fonctions opérant sur un noeud
Fonction SxmlReplaceName
Cette fonction permet de changer le nom d'un nœud;
- Synopsis
#include "SxmlNode.h"
SxmlNode *SxmlReplaceName(SxmlNode *node, char *newName);
Cette fonction remplace le nom actuel d'un nœud par celui qui est donné en attribut.
Si le nouveau nom est défini par une constante il faut notamment créer un clone de la chaîne par un strdup(), par exemple :
SxmlReplaceName(titleNode, strdup("titre");
Fonction SxmlRemoveChild
Cette fonction permet d'isoler un nœud (plus précisément le sous-arbre correspondant). Elle est conforme aux recommandations du W3C.
Attention, une itération sur cette fonction ne doit pas être gérée par SxmlReset.
Exemple :
SxmlNode *nodeToRemove;
if ((nodeToRemove=SxmlGetFirstChildByTagName(listConcept, "preferredConcept"))
{
SxmlRemoveChild(nodeToRemove);
}
Fonction SxmlReplaceChild
Cette fonction permet de remplacer un nœud (et sa descendance) dans un arbre par un autre nœud.
Le nœud initial (et sa descendance) est supprimé.
Attention, une itération sur cette fonction ne doit pas être gérée par SxmlReset.
Fonctions d'insertion
Fonction SxmlInsertAfter
Fonction SxmlInsertBefore
Fonction SxmlAppendChid
Fonction SxmlAddFirstChild
Exemples récapitulatifs
Remplacement d'un fils par son petit-fils
SxmlNode *child1;
SxmlNode *child2;
SxmlNode *nodeToTransform;/* dont le fils sera remplacé par le petit fils */
if (nodeToTransform= ... )
{
if (child1=SxmlFirstChild(nodeToTransform))
{
if (child2=SxmlFirstChild(child1))
{
SxmlRemoveChild(child2);
SxmlReplaceChild(child1, child2);
SxmlFree(child1);
}
}
}