Dilib, module SxmlNode, fonctions c, accès aux éléments
|
Cette page introduit les fonctions de base pour l'accès aux éléments d'un arbre XML.
Liste des modules Dilib
Module SxmlNode
|
Méthodes de base
Les méthodes élémentaires pour accéder à l'environnement d'un nœud sont les suivantes :
- SxmlFirstChild: le premier fils ;
- SxmlLastChild: le dernier fils ;
- SxmlNexSibling: le frère droit ;
- SxmlPreviousSibling: le frère gauche;
- SxmlParent: le père .
SxmlFirstChild
- Synopsis
#include "SxmlNode.h"
SxmlNode *SxmlFirstChild(SxmlNode *node);
Accès aux enfants (child)
SxmlGetFirstChildByTagName
- Synopsis
#include "SxmlNode.h"
SxmlNode *SxmlGetFirstChildByTagName(SxmlNode *node, char *tag);
SxmlGetChildPosition
- Synopsis
SxmlNode *SxmlGetChildByPosition(SxmlNode *n1, int pos);
Accès aux descendants
SxmlGetFirstDescendantByTagName
Cette fonction permet d'atteindre le premier descendant d'un nœud dont le nom est identique au paramètre.
- Synopsis
#include "SxmlNode.h"
SxmlNode *SxmlGetFirstDescendantByTagName(SxmlNode *node, char *tag);
SxmlGetNextDescendantByTagName
Cette fonction permet d'atteindre le descendant suivant d'un nœud dont le nom est identique au paramètre, à partir d'un descendant déjà identifié.
- Synopsis
#include "SxmlNode.h"
SxmlNode *SxmlGetFirstDescendantByTagName(SxmlNode *node, SxmlNode *from, char *tag);
SxmlListDescendant
Cette fonction est en fait un constructeur de SxmlNodeList (et donc de SxmlNode) qui crée une liste de pointeurs vers les descendants identifiés par tag.
- Synopsis
#include "SxmlNode.h"
SxmlNodeList *SxmlListDescendant(SxmlNode *node, char *tag)
Exemple d'emploi
Recherche de tous les éléments « title » d'un document.
elem=SxmlGetFirstDescendantByTagName(doc, "title");
while (elem)
{
SxmlPrint(elem);
putchar ('\n');
elem=SxmlGetNextDescendantByTagName(doc, elem, "title");
}
Cet exemple peut se traiter avec une liste :
list=SxmlListDescendant(doc, "title");
SxmlReset(list);
while(elem=SxmlNodeListNextNode(list))
{
SxmlPrint(elem);
putchar ('\n');
}
Itérateurs
Un itérateur qui permet d'atteindre la suite des fils est associé à chaque élément Sxml.
fonction SxmlReset
fonction SxmlNextNode
Exemple
SxmlNode *authorNode;
SxmlNode *affNode;
...
SxmlReset (authorNode);
while ((affNode=SxmlNextNode(authorNode)))
{
if (!(SxmlNodeHasName(affNode), "affiliation") continue;
proceedAffiliation (affNode);
}