[GMarkup] contourner les erreurs fatales
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 :
Code:
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); |
Toutes les fonctions sont correctement déclarées et tout fonctionnement pour le mieux.
J'ai créé un fichier xml minimaliste avec une erreur volontaire sur les balises. Deux d'entre-elles se chevauchent.
Code:
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> |
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:
Once an error is reported, no further data may be fed to the GMarkupParseContext; all errors are fatal.
Y-aurait-il un moyen de garder la main ?