# Documentation de la bibliothèque MLV-0.6.705

- Presentation
- Téléchargement
- Installation
- Compilation
- Exemples
- API
- Liste des fonctions
- bogues
- contacts

# advanced/10_read_xml_file.c

Ce programme explique commen utilise l'interface simplifié de la bibliothèque pour lire et recupere des informations contenu dans des fichiers écrits au format xml.

    #include  <MLV/MLV_all.h>
    #include  <stdlib.h>

    //
    // Attention !
    // Pour pouvoir compiler ce programme sous windows et sous macintosh,
    // il faut, pour la déclaration du main, respecter strictement la syntaxe
    // suivante :
    //
    int main( int argc, char *argv[] ){

            int annee;
            MLV_Xml* config;
            char* text;
            double reel;
            int nb_copains,i;

            //
            // On charge en mémoire le fichier XML contenant toutes les informations
            // nécessaires au fonctionnement du programme.
            //
            config = MLV_load_xml( "informations.xml" );

            //
            // On récupère puis on affiche le texte contenu dans l'élément
            // informations/nom_programme
            //
            if(
                    MLV_get_string_value_from_xml(
                            config, &(text), "/informations/nom_programme"
                    )
            ){
                    fprintf( stderr, "Le fichier XML n'est pas valide, l'élément /informations/nom_programme est manquant.\n" );
                    exit(1);
            }

            printf("Titre : %s\n", text);
            free(text);

            //
            // On récupère puis on affiche l'entier contenu dans l'élément
            // informations/anne_production
            //
            if(
                    MLV_get_integer_value_from_xml(
                            config, &(annee), "/informations/annee_production"
                    )
            ){
                    fprintf( stderr, "Le fichier XML n'est pas valide, l'élément /informations/annee_production est manquant ou ne contient pas d'entier.\n" );
                    exit(1);
            };

            printf("Annee de production : %d \n", annee);

            //
            // On récupère puis on affiche le réél contenu dans l'élément
            // informations/reel_prefere
            //
            if(
                    MLV_get_double_value_from_xml(
                            config, &(reel), "/informations/reel_prefere"
                    )
            ){
                    fprintf( stderr, "Le fichier XML n'est pas valide, l'élément /informations/reel_prefere est manquant ou ne contient pas de réel.\n" );
                    exit(1);
            }

            printf("Mon réel préféré : %f \n", reel);

            //
            // On affiche les copines.
            //
            printf("Mes copines sont : \n");
            nb_copains = MLV_get_number_of_objects_from_xml(
                    config, "/informations/amis/ami[@sexe='femme']"
            );
            for( i = 0; i< nb_copains; i++ ){
                    if(
                            MLV_get_string_value_from_xml(
                                    config, &(text), "/informations/amis/ami[@sexe='femme'][%d]",
                                    i+1
                            )
                    ){
                            fprintf( stderr, "Le fichier XML n'est pas valide, l'élément /informations/amis/ami[@sexe='femme'][%d] est manquant.\n", i+1 );
                            exit(1);
                    }
                    printf("    - %s \n", text);
                    free( text );
            }

            //
            // On libère l'espace alloué pour le fichier xml.
            //
            MLV_free_xml( config );

            return 0;
    }