15:20
- Ajourd'hui est un grand jour, car il marque l'accomplissement de la gestion de l'XML par The X-Tools, tâche commencée le 12 juillet.
- Pour rappel, Delphi 5 ne gérant pas nativement l'XML, la première solution a été d'écrire du code spécifique pour écrire et lire les fichiers XML. Cette méthode a été abandonnée assez rapidement, le risque de crash de l'application lors du chargement de fichiers XML corrompus étant trop important.
- La solution suivante a été d'utiliser le Parser XML de Windows, via la DLL MSXML.dll, comme décrit ici. Méthode rapidement abandonnée face à l'impossibilité d'utiliser la DLL sans fichier d'aide, le fichier source créé par l'import n'étant pas documenté.
- Ensuite, et jusqu'à hier, c'est l'unité MSXML de Delphi 7 qui a été greffée dans Delphi 5 et utilisée. Elle mappe en fait le Parser XML de Windows, mais son code est documenté, donc exploitable. Le seul souci était le mode Compact du flux obtenu, c'est à dire tous les élements à la suite sans retour à la ligne ni indentation.
- Une des raisons du choix du format XML étant de pouvoir éditer manuellement les fichiers si besoin, cette solution n'était pas satisfaisante, et il restait donc à passer en mode Readable.
- Après des tentatives rapidement avortées de gérer la mise en forme via du code, le module NativeXML a été installé dans sa dernière version 4.0.1. Ce module gère le format Readable, il est possible de spécifier le(s) caractère(s) de fin de ligne ainsi que d'indentation. Parfait ? Presque, car il est entièrement Unicode depuis, et les accents sont donc traduits en caractères "XML compliant". Son mode ANSI est malheuresuement buggé.
- Et finalement, perdu au fond du forum, un post qui met en ligne une ancienne version 2.38, non compatible Unicode.
- Et bien cette version 2.38 de NativeXML est parfaite, le texte est parfaitement lisible et son indentation est paramétrable. Les fichiers XML de The X-Tools seront donc encodés en Windows 1252 au lieu de l'habituel UTF-8, mais cela reste "XML compliant", puisque spécifié dans l'en-tête, et est cohérent avec l'application, elle-même entièrement gérée en ANSI.