Bonjour.
Je tente pour la première fois d'utiliser les GMarkup. Je progresse tranquillement mais je tombe sur un fonctionnement apparemment normal mais qui me gène. Je vous explique mon dilemme.
Je commence par créé un GMarkupParseContext avec les flags suivants :
Toutes les fonctions sont correctement déclarées et tout fonctionnement pour le mieux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 priv->markupparser.start_element = gastro_xml_start_element; priv->markupparser.end_element = gastro_xml_end_element; priv->markupparser.text = gastro_xml_text; priv->markupparser.passthrough = gastro_xml_passthrough; priv->markupparser.error = gastro_xml_error; priv->markupcontext = g_markup_parse_context_new (&priv->markupparser, G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG|G_MARKUP_PREFIX_ERROR_POSITION, NULL, gastro_xml_destroy_notify);
J'ai créé un fichier xml minimaliste avec une erreur volontaire sur les balises. Deux d'entre-elles se chevauchent.
C'est ici que survient mon problème. Je récupère bien l'erreur du parser ("Erreur à la ligne 7, caractère 22*: L'élément «*place*» a été fermé, mais l'élément actuellement ouvert est «*longitude*»") mais la fonction g_markup_parse_context_parse(); ferme l'application ! Et malheureusement la documentation semble dire la même chose !
Code : 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 <?xml version=\"1.0\" encoding=\"utf-8\" ?> <xml> <projet> <name>coucou</name> <dir>/home/gerald/projet/gastro/src/test</dir> <place> <longitude>47</place></longitude> <latitude>5.18 <date>05/11/16</date> <time>22:18</time> <astromaterial></astromaterial> <astrophoto></astrophoto> </xml>
Y-aurait-il un moyen de garder la main ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Once an error is reported, no further data may be fed to the GMarkupParseContext; all errors are fatal.
Partager