Construction de documents XML en langage C

De Wicri Manuel
Révision datée du 25 juin 2020 à 07:49 par imported>Jacques Ducloy (Gestion de flots de documents)

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

SgmlNode *SxmlInputNextDocumentElement();

SxmlInputRecordKey