Bonjour à tous,

Avec libxml 2.9.3, sur ubuntu 18.04, lorsque j'indique un fichier qui n'existe pas, j'obtiens l'erreur : I/O warning : failed to load external entity "/home/user/documents/404.xml" qui s'affiche dans stderr.

Je souhaiterai gérer moi même la présentation des erreurs. Comment faire ?

voici mon code :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
int
dom_document_load(const gchar *uri)
{
    xmlSAXHandler sh = {0, };
    //...
    sh.warning        = (warningSAXFunc) dom_parser_warning;// pas appelé
    sh.error          = (errorSAXFunc) dom_parser_error;// pas appelé
    sh.fatalError     = (fatalErrorSAXFunc) dom_parser_fatal_error;// pas appelé
 
    // Création du contexte
    xmlParserCtxtPtr ctxt = xmlCreateFileParserCtxt(uri);
    if (ctxt == 0) {
        fprintf(stderr, "Erreur lors de la création du contexte\n");
        return -1;
    }
    // Fonctions de rappel à utiliser
    ctxt->sax2 = &sh;
 
    // Analyse
    xmlParseDocument(ctxt);
 
    if (ctxt->wellFormed) {
        fprintf("Document bien formé\n");
    } else {
        fprintf(stderr, "Document XML mal formé\n");
        xmlFreeParserCtxt(ctxt);
        return -1;
    }
 
    // Libération de la mémoire
    //...
 
    return 0;
}
 
main () {
  dom_document_load("/home/user/documents/404.xml");// output :
                                                    // I/O warning : failed to load external entity "/home/user/documents/404.xml"
                                                    // Erreur lors de la création du contexte
}

D'avance merci pour vos lumières.