Dilib, module SxmlNode, fonctions c, entrées sorties
Module SxmlNode |
Cette page introduit les procédures courantes d'entrée sortie des flux ou documents Sxml.
Liste des modules Dilib
Module SxmlNode
|
Introduction
Entrées-sorties
Les fonctions qui réalisent les entrées sorties sont réalisées à partir des fonctions précédentes et utilisent, pour les entrées, un lecteur, ou moteur de lecture (un SxmlRecordReader).
Écritures ou exportation d'arbres Sxml
- Impression d'un objet XML sur la sortie standard :
SxmlPrint(node);
- Impression d'un objet XML dans un fichier :
SxmlFilePrint(node, file);
FILE *file;

Lecture d'un fichier contenant une suite d'enregistrements
Le SxmlRecordReader
sert à contrôler la gestion du flux d'entrées et l'appel au parser.
Dans les cas simples, un lecteur implicite facilite les opérations (et rend transparent ce lecteur interne).
Une seule fonction est alors utile dans les cas simples : SxmlInputNextDocumentElement
(à partir de la version V0.6.06, cette fonction est remplacée par SxmlInputGetDocumentElement
et
SxmlInputGetRecordLastItem
).
- lecture du prochain document XML sur l'entrée standard (à partir de la version V.6.06).
SxmlNode *SxmlInputGetDocumentElement();
Cette fonction retourne un pointeur sur la racine du document et la valeur NULL en fin de fichier.

Exemples
- Impression de tous les premiers fils ayant « a » pour tag.
#include "SxmlNode.h"
main()
{
SxmlNode *docu ,*son;
while((docu=SxmlInputGetDocumentElement()))
{
if (son=SxmlFirstChild(docu))
{if (SxmlNodeHasName(son,"a"))
{SxmlPrint(son);putchar('\n');
}}}
}
- Ajout d'un nouvel élément à tous les documents.
#include "SxmlNode.h"
main()
{
SxmlNode *docu;
while((docu=SxmlInputGetDocumentElement()))
{
SxmlNode *nouveauFils;
nouveauFils=XmlLeafCreate("a","nouveau");
SxmlAppendChild(docu,nouveauFils);
SxmlPrint(docu);
putchar('\n');
}
}
- ou en écriture plus compacte
#include "SxmlNode.h"
main()
{
SxmlNode *docu;
while((docu=SxmlInputGetDocumentElement()))
{
SxmlAppendChild(docu,SxmlLeafCreate("a","nouveau"));
SxmlPrint(docu);
putchar('\n');
}
}