- Christophe Nowicki - http://www.csquad.org -
Validation d’un fichier CSV à l’aide d’un Schéma XML
Posted By cscm On 3rd June 2008 @ 07:10 In Work, PHP | No Comments
Malgré tout le mal qu’il est possible de penser ou de dire sur le format de fichier CSV, celui-ci présente beaucoup d’avantages :
Mais ce format de fichier ne dispose pas d’un système de validation. Dans la plupart des cas ce sont les routines d’import / export qui prennent en charge la validation des données et de leur mise en forme.
Ce travail est pénible, répetitif et ennuyeux mais nécessaire si vous ne voulez pas qu’un fichier mal formaté ne corrompe les données de votre base.
L’objectif de cette article est de proposer une solution simple permettant la validation d’un fichier CSV en utilisant les fonctionnalités offertes par les schémas XML.
Les exemples fournis sont écrit à l’aide du language de programmation PHP5.
Votre fichier doit contenir sur la 1ère ligne, le nom de chaque cologne :
“CHANNEL”;”COMPANY”;”BVD_ID_Groupe_1″;”BVD_ID_Groupe_2″;”GENRE”;”URL”;”OTHER_URL”;”COMPETENT_AUTHORITY”
“Canal+ Film 1″;”C MORE ENTERTAINMENT AB”;”NL33268595″;”DE8330261794″;”CIN”;”http://www.canalplus.se”;”http://www.sbsbroadcasting.com/, http://www.prosiebensat1.de/”;”RTVV”
“Canal+ Film 2″;”C MORE ENTERTAINMENT AB”;”NL33268595″;”DE8330261794″;”CIN”;”http://www.canalplus.se”;”http://www.sbsbroadcasting.com/, http://www.prosiebensat1.de/”;”RTVV”
“Canal+ Film 2 Sport Weekend”;”C MORE ENTERTAINMENT AB”;”NL33268595″;”DE8330261794″;”CIN”;”http://www.canalplus.se”;”http://www.sbsbroadcasting.com/, http://www.prosiebensat1.de/”;”RTVV”
“Canal+ Film 3″;”C MORE ENTERTAINMENT AB”;”NL33268595″;”DE8330261794″;”CIN”;”http://www.canalplus.se”;”http://www.sbsbroadcasting.com/, http://www.prosiebensat1.de/”;”RTVV”
“Canal+ Film HD”;”C MORE ENTERTAINMENT AB”;”NL33268595″;”DE8330261794″;”CIN”;”http://www.canalplus.se”;”http://www.sbsbroadcasting.com/, http://www.prosiebensat1.de/”;”RTVV”
Pour transformer le fichier CSV en XML, il suffit de lire le fichier CSV avec la fonction fgetcsv et mettre les données dans des balisent XML : [1] csv_to_xml.php
Une fichier CSV converti en XML ressemble à cela : [2] channel.xml
Il ne reste plus qu’à écrire le schéma permettant de valider le fichier XML : [3] channel.xsd
Vous pouvez tester vos schéma en ligne de commande en utilisant la commande xmllint issue du paquet Debian libxml2-utils :
$ xmllint –noout –schema channel.xsd channel.xml
channel.xml validates
Une fois que votre schéma est correct et permet de valider le contenu du fichier XML, il faut l’intégrer directement dans votre application : [4] validate.php
Cette méthode apporte les avantages suivants :
Cette technique a été mise en oeuvre dans le cadre du projet [5] MAVISE pour valider plus d’une vingtaine de formats de fichiers différents.
Article printed from Christophe Nowicki: http://www.csquad.org
URL to article: http://www.csquad.org/2008/06/03/validation-dun-fichier-csv-a-laide-dun-schema-xml/
URLs in this post:
[1] csv_to_xml.php: http://www.csquad.org/go.php?http://svn.csquad.org/misc/csv_xsd/csv_to_xml.php
[2] channel.xml: http://www.csquad.org/go.php?http://svn.csquad.org/misc/csv_xsd/channel.xml
[3] channel.xsd: http://www.csquad.org/go.php?http://svn.csquad.org/misc/csv_xsd/channel.xsd
[4] validate.php: http://www.csquad.org/go.php?http://svn.csquad.org/misc/csv_xsd/validate.php
[5] MAVISE: http://www.csquad.org/go.php?http://mavise.obs.coe.int/
Click here to print.