Travailler un fichier XML pour le sortir en CSV

flyjodel

XLDnaute Junior
Bonjour,

je viens vers vous pas pour une solution technique directement (ça viendra peut-être après...) mais pour savoir si ce dont j'ai besoin n'existerait pas déjà, histoire de ne pas réinventer l'eau chaude.

J'ai des données qui sont formatées par des balises XML.
Je souhaite créer un fichier texte (CSV) qui reprenne ces données, mais en les réorganisant.

J'ai vu comment le faire avec une page de formatage XSL et c'est assez simple, mais je souhaite rajouter à cela quelques fonctions de manipulations des données lues (conversions, calculs etc.)

Est-ce qu'il existe quelque part une macro qui me permettrait de créer un CSV à partir d'un XML (ça y'en a plein sur le net), mais en choisissant l'ordre des données ?

Par exemple :
je veux transformer ce ficheir
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<trajet>
	<point>
		<name>depart</name>
		<latitude>123</latitude>
		<longitude>456</longitude>
		<altitude>789</altitude>
	</point>
	...
	<point>
		<name>arrivée</name>
		<latitude>001</latitude>
		<longitude>002</longitude>
		<altitude>003</altitude>
	</point>
</trajet>

en fichier CSV mais qui me permette de choisir l'ordre d'apparition des champs:
Code:
depart,456,123,789
...
arrivée,002,001,003

l'idée est ici d'inverser deux champs. Je souhaite que cette réorganisation soit définissable dans un fichier externe (masque) par exemple :
Code:
<name><logitude><latitude><altitude>

l'intérêt de l'avoir dans une macro serait de pouvoir ensuite appliquer d'autres fonctions aux données lues pour transformation avant écriture du fichier CSV définitif. En général je fais ce genre de trucs à la main, mais c'est fatiguant de tout refaire à chaque fois, alors une macro serait parfaite pour ce genre de job.

je me pose trop de questions ?
merci pour votre aide !
Michel
 
Dernière édition:

flyjodel

XLDnaute Junior
Re : Travailler un fichier XML pour le sortir en CSV

Bonjour,

merci de ta réponse, c'est effectivement efficace. J'ai passé quelques heures à réfléchir à mon problème aujourd'hui et cette formulation sera trop rigide car trop dépendante de la structure du XML considéré en entrée.

J'en viens à la question suivante qui me permettra certainement de résoudre ce problème plus efficacement :
existe-t-il une librairie, ou une fonction qui permette de manipuler du XML pour le transformer en objets ?

En effet, ce serait finalement intéressant de créer une collection d'objets "à la volée" à partir de la lecture des balises XML.

Dans mon exemple
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<trajet>
    <point>
        <name>point_1</name>
        <latitude>111</latitude>
        <longitude>111</longitude>
        <altitude>111</altitude>
    </point>
    <point>
        <name>point_2</name>
        <latitude>222</latitude>
        <longitude>222</longitude>
        <altitude>222</altitude>
    </point>
    <point>
        <name>point_3</name>
    </point>
</trajet>

serait-il possible de trouver une fonction qui aurait en sortie un tableau de 3 éléments, chaque élément étant un objet qui aurait la structure et les propriétés définies par les balises de l'arborescence ?
Dans mon cas en sortie :
Code:
Tableau à 3 éléments :

point(1)
  |_name = point_1
  |_latitude = 111
  |_longitude = 111
  |_altitude = 111

point(2)
  |_name = point_2
  |_latitude = 222
  |_longitude = 222
  |_altitude = 222

point(3)
  |_name = point_2

et que je pourrais adresser comme un objet :
-> point(x).name renverrait la valeur correspondant à la balise <name> du x-ème élément

est-ce que ce genre de librairie ou macro existe ?
 
Dernière édition:

Gareth

XLDnaute Impliqué
Re : Travailler un fichier XML pour le sortir en CSV

Bonsoir,

Je ne connais pas trop le XML mais Excel 2010 m'ouvre le fichier comme ci-joint.
Tu peux peut-etre le traiter à partir de ça ?
 

Pièces jointes

  • Classeur3.xlsx
    10.6 KB · Affichages: 32
  • Classeur3.xlsx
    10.6 KB · Affichages: 33
  • Classeur3.xlsx
    10.6 KB · Affichages: 33

flyjodel

XLDnaute Junior
Re : Travailler un fichier XML pour le sortir en CSV

Bonsoir,

oui effectivement, c'est ainsi que j'obtiens la visualisation des fichiers XML dans Office2010.

J'ai trouvé des infos sur une librairie MSXML.dll et quelques infos sur le site de microsoft ( Ce lien n'existe plus )

J'ai l'impression que cela correspond à ce que je veux faire : Ce lien n'existe plus

Je vais fouiller un peu dans cette voie...
Bonne soirée à tous !
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 225
Messages
2 086 411
Membres
103 201
dernier inscrit
centrale vet