Closed lecault closed 1 year ago
L'encodage des fichiers générés par studio rend le fichier XML pas très propre.
C'est un encodage simple des caractères spéciaux (HTML). On a ce type d'encodage dans le XML pour tout ce qui est HTML dans une propriété mviewer (e.g attributions).
Je vais l'échapper pour que ce soit + lisible
pas si simple, etree ne semble pas bien lire le type string qui a été sauvegardé sur le serveur après l'avoir échappé
Je confirme, l'échappement total du fichier impose d'échapper les propriété volontairement échapée pour être lisible dans mviewer (comme les attributions). L'échappement dans le backend va donc échapper ces propriétés et créer un XML invalide.
Exemple :
attribution="<a href=\'https://geoservices.ign.fr\' target=\'_blank\'><img src=\'https://geoservices.ign.fr/images/logoIGN.png\'></a>"
... va rendre :
attribution="<a href=\'https://geoservices.ign.fr\' target=\'_blank\'><img src=\'https://geoservices.ign.fr/images/logoIGN.png\'></a>"
Et semble provoquer un soucis de lecture dans la lib Python de parcours d'un XML (ET).
C'est un encodage simple des caractères spéciaux (HTML). On a ce type d'encodage dans le XML pour tout ce qui est HTML dans une propriété mviewer (e.g attributions).
Je sais que c'est nécessaire également dans les liens web pour ne pas avoir des & qui ferait planter mviewer. Du coup vous encodez tous les attributs xml ?
Du coup vous encodez tous les attributs xml ?
L'encodage semble automatique lors de la lecture du XML via Flask (lorsqu'on sauvegarde le XML). Je n'ai rien réglé de ce côté et lorsqu'on parse le XML, il y a déjà l'encodage.
Le decode en UTF-8 n'est pas appliqué car il semble encodé en entité HTML.
Ah non c'est visiblement après, à la sauvegarde.
Voilà ce que le front envoi :
<dc:title>lycée</dc:title>\n
Voilà ce que Python récupère (flask -> String -> ET) :
<application\r\n title="lycée"
Voici ce qu'on sauvegarde (ET vers string):
xml_to_string = ET.tostring(xml)
title="lycée"
OK vu il faut préciser l'encodage à la transformation ET -> String
:
De ...
xml_to_string = ET.tostring(xml).decode("utf-8")
en...
xml_to_string = ET.tostring(xml, "utf-8").decode("utf-8")
C'est bon merci
L'encodage des fichiers générés par studio rend le fichier XML pas très propre.
Exemple : <application title="Lycées de Bretagne"
Alors je viens de tester l'import d'un fichier généré par studio avec cette encodage, mviewer interprète bien l'encodage donc il est réutilisable en l'état.
Si dans un fichier avec ces encodages, on met des accents ça passe aussi. Donc c'est plus une problématique esthétique. Non bloquant.