Lire un document XML

Problème

Vous souhaitez lire un document XML afin d’en mettre le contenu en mémoire.

Solution

Utilisez l’API DOM de libxml2 pour le charger en mémoire et accéder à son contenu.

Discussion

Le chargement en mémoire d’un document XML s’effectue avec xmlParseFile() si le document se trouve dans un fichier. S’il se trouve en mémoire, par exemple dans une chaîne de caractères, utilisez xmlParseMemory(). Dans le cas d’un flux, assurez-vous que vous souhaitez bien le mettre en mémoire. 


int 
main (int argc, char **argv) 
{ 
  xmlDocPtr xmldoc; 
  xmlNodePtr xmlroot; 
  char *filename = argv[1]; 
 
/* Lecture et analyse du document XML contenu dans filename. */ 
  if (NULL == (xmldoc = xmlParseFile (filename))) 
    { 
      fprintf (stderr, "xmlParseFile a échoué\n"); 
      exit (EXIT_FAILURE); 
    } 
 
/* Obtention du noeud racine. */ 
  if (NULL == (xmlroot = xmlDocGetRootElement (xmldoc))) 
    { 
      fprintf (stderr, "Le document est vide\n"); 
      xmlFreeDoc (xmldoc); 
      exit (EXIT_FAILURE); 
    } 
  exit (EXIT_SUCCESS); 
}
 

Ce programme charge le document XML en mémoire et fait pointer xmldoc dessus. Le nœud de l’arbre DOM correspondant à la racine XML du document s’obtient avec xmldoc->children, et la chaîne de caractères correspondant au nom du nœud est xmldoc->children->name.

L’accès...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Introduction
Suivant
Transformer un arbre DOM en XML