TXMLWriter - Exemples

TXMLWriter = class (TObject)Interface de TXMLWriterExemples de TXMLWriter
uses XMLDirect, QubesUsers;

// Lecture de tous les utilisateurs
var lstUsers:=TStrings.Create;
GetAllUsersHavingFunctions(lstUsers, '');

// Création d'un XML qui contient les users.
// Chaque user est dans une noeud user avec un attribut login
// Le nom, le prénom et les fonctions sont dans des sous-noeuds
var xml:=TXMLWriter.Create('users');
for var i:=0 to lstUsers.Count-1 do begin
   // On crée un noeud 'user' pour chaque user
   xml.AddNode('user');

   // Ce noeud a un attribut login
   var login := lstUsers[i];
   xml.Attributes['login'] := login;

   // On ajoute 2 sous-noeuds 'nom' et 'prenom'
   var user:=TUser.Connect(login);
   xml.AddClosedNode('nom', user.LastName);
   xml.AddClosedNode('prenom', user.FirstName);

   // On ajoute autant de noeuds 'function' qu'il y a de fonctions
   xml.AddNode('functions');
   for var j := 0 to user.FunctionCount - 1 do
      xml.AddClosedNode('function', user.Function[j]);
   xml.CloseNode('functions'); // sécurité : on vérifie qu'on ferme bien le noeud "functions"

   // on ajoute la signature html des mails de l'utilisateur
   // dans un noeud CDATA pour éviter d'encoder les caractères "<", ">", "&"
   xml.AddClosedDataNode('signature', '<html><body>' + HTMLify(user.FirstName + ' ' + user.LastName) + '</body></html>');

   // On ferme le noeud 'user', en le précisant par sécurité
   xml.CloseNode('user');
end;
PrintLn(xml.AsXMLUTF8);

//<?xml version="1.0" encoding="UTF-8"?>
//<users>
//      <user login="eg">
//              <nom>G</nom>
//              <prenom>Eric</prenom>
//              <functions>
//                      <function>Employé</function>
//              </functions>
//              <signature><![CDATA[<html><body>Eric G</body></html>]]></signature>
//      </user>
//      <user login="ph">
//              <nom>H</nom>
//              <prenom>Philippe</prenom>
//              <functions>
//                      <function>Consultant MES</function>
//                      <function>Manager</function>
//              </functions>
//              <signature><![CDATA[<html><body>Philippe H</body></html>]]></signature>
//      </user>
//</users>