Construction de documents XML en langage C
De Wicri Manuel
Révision datée du 25 juin 2020 à 09:49 par imported>Jacques Ducloy (→Accès au document courant)
Construction de documents XML en langage C < = Exploration d'un document de métadonnées en langage C |
Sommaire
Le type Buffer
La construction de documents demande souvent l'élaboration de chaînes. La gestion des chaînes de longueur variables est relativement difficiles à gérer en langage C.
Un type Buffer a été introduit pour simplifier ce type de tâche.
Une documentation technique est disponible sur Wicri/Outils.
Exemple introductif
En pratique ces objets ne se manipulent que par des pointeurs. Voici un exemple du calcul d'une url utilisant un Buffer.
#include "Buffer.h"
Buffer *bufUrl;
char *myPage;
...
bufUrl=NewBuffer();
BufferStrcpy(bufUrl,"http://myWebSite/");
BufferStrcat(bufUrl,myPage);
printf ("<a href=\"%s\">Pour aller sur %s</a>", BufferString(bufUrl), myPage);
Déclaration et création
L'utilisation des Buffers demande l'appel du ficher "Buffer.h".
Ces structures doivent être explicitement crées avec la fonction NewBuffer().
- Dans un programme principal
#include "Buffer.h"
...
main() {
...
Buffer *bufUrl;
...
bufUrl=NewBuffer();
...
- Dans une fonction
#include "Buffer.h"
...
int maFonction ( ... ) {
static Buffer *monBufferLocal = NULL; /* déclare le Buffer avec un pointeur NULL */
...
if (! monBufferLocal) monBufferLocal = NewBuffer(); /* création au premier appel */
Opérations sur un Buffer
Copie
BufferStrcpy
- BufferStrcpy copie une chaîne dans un Buffer.
- Synopsis
char *BufferStrcpy(Buffer *b, char *str)
- Paramètres
- b un Buffer,
- str la chaîne à copier.
Concaténation
BufferStrcat
- ajoute une chaîne de caractères à la fin du Buffer.
- Synopsis
char *BufferStrcat(Buffer *b, char *str)
- Paramètres
- b un Buffer,
- str la chaîne à concaténer.
Gestion de flots de documents
Accès au document courant
Nous avons déjà utilisé la fonction :
SgmlNode *SxmlInputGetDocumentElement();
Accès à la clé du document courant
SxmlInputRecordKey