Format Export Base XML pour ACDSee Photo Studio

Démarré par cifMichel95, Décembre 11, 2017, 08:40:36

« précédent - suivant »

cifMichel95

Je suis en train de regarder les fonctions catalogueur de ACDSee Photo Studio Standard 2018 Windows.
« Le meilleur gestionnaire d'actifs numériques du marché » qu'ils disent  ;D.

Le catalogage de centaines de photos représentant pas mal d'heures de travail, j'aimerai pérenniser cette tache.
J'ai donc été attiré par la fonction exporter la base de données en mode XML.
Or le fichier produit présente chez moi (Version Trial) un drôle de formatage,

0000-0010:  3c 00 41 00-43 00 44 00-44 00 42 00-20 00 56 00  <.A.C.D. D.B...V.
0000-0020:  65 00 72 00-73 00 69 00-6f 00 6e 00-3d 00 22 00  e.r.s.i. o.n.=.".
0000-0030:  31 00 2e 00-31 00 36 00-2e 00 30 00-22 00 3e 00  1...1.6. ..0.".>.
0000-0040:  0a 00 3c 00-43 00 61 00-74 00 65 00-67 00 6f 00  ..<.C.a. t.e.g.o.
0000-0050:  72 00 79 00-4c 00 69 00-73 00 74 00-3e 00 0a 00  r.y.L.i. s.t.>...
0000-0060:  3c 00 43 00-61 00 74 00-65 00 67 00-6f 00 72 00  <.C.a.t. e.g.o.r.

Tous les caractères sont précédés de 00 ce qui le rend inexploitable directement par les outils qui lisent du XML.
De même si l'on modifie l'export XML sans rajouter ces 00, il est rejeté à l'importation.

Relisez vous les exports XML dans d'autre logiciels ?
Pour lire l'hexadécimal en ligne https://www.fileformat.info/tool/hexdump.htm

Agathon

C'est apparemment codé en UTF16 (deux octets par caractère) en mode petit-boutien (little-endian) c'est-à-dire octet de poids faible en tête, mais sans le BOM (byte order mark) qui est composé de deux octets particuliers en tête de fichier. Il manque aussi l'en-tête indiquant qu'il s'agit d'un fichier XML, typiquement ici "<?xml version="1.0" encoding="UTF-16"?>". Il ne serait probablement pas nécessaire de préciser le codage car le BOM est normalement suffisant. Mais sans le BOM, il est impossible de savoir qu'on a affaire à un codage sur deux octets, donc on ne peut même pas lire l'en-tête.

Pourquoi ont-ils choisi d'utiliser l'UTF-16 plutôt que l'UTF-8 est un mystère, l'UTF-16 ne présentant aucun avantage ici. Il faudrait vérifier s'il n'existe pas quelque part une option permettant de produire un fichier codé en UTF-8 directement lisible par un éditeur de texte.

Pour rendre ce fichier lisible par un outil acceptant le XML, il faut ajouter au début le BOM et la ligne manquante codée en UTF-16 petit-boutien (UTF16-LE). Il existe des tas de méthodes pour faire cela. Le plus simple serait d'ouvrir le fichier avec un éditeur permettant de spécifier le codage utilisé (UTF-16). On peut alors ajouter la ligne d'en-tête, mais cela ne garantit pas que le BOM sera écrit lors de l'enregistrement (je peux garantir toutefois que ça marche avec LibreOffice).

La méthode la plus efficace consiste à créer un fichier codé en UTF-16 avec BOM et contenant la ligne d'en-tête (en utilisant, par exemple, LibreOffice). Il suffit alors de concaténer ce fichier et le fichier à traiter pour construire un fichier lisible et peut-être analysable. Mais pour réaliser cette concaténation, il faut travailler en ligne de commande (commande « cat » sur Linux ou MacOS, quant à Windows...).

On peut aussi écrire un programme très simple pour faire ce petit travail.

À noter que le BOM et la ligne d'en-tête permettront à d'autres outils de lire et analyser le fichier, mais pourront empêcher ACDsee de le relire. Et même si un outil arrive à lire le XML, il n'y a aucune garantie qu'il comprenne les balises propres à ACDsee et sache en faire quelque chose. Néanmoins, disposer d'une sortie en XML (même tronqué) permet d'assurer une certaine pérennité car on saura toujours en extraire les informations (même si cela demande un certain travail).


cifMichel95

En plein dans le 1000 Agathon  ;).

Windows a un peu évolué depuis MS DOS  ::).

En PowerShell :

Get-Content -Path export.txt  -Encoding Unicode > resu.xml

0000-0010:  ff fe 3c 00-41 00 43 00-44 00 44 00-42 00 20 00  ..<.A.C. D.D.B...
0000-0020:  56 00 65 00-72 00 73 00-69 00 6f 00-6e 00 3d 00  V.e.r.s. i.o.n.=.

et c'est lisible par XML Notepad.

Agathon

Effectivement, je connais l'existence du Powershell, mais n'ai jamais eu l'occasion de l'utiliser. Quand je travaillais sous Windows, j'installais les outils GNU qui me fournissaient un outillage de base similaire à ce que j'utilisais sous Linux ou MacOS.

Quoi qu'il en soit, l'important était d'ajouter ce BOM. Voilà qui est fait ! Et élégamment avec cette commande.