[Access et XML] Exportation de données en XML

Exportation de données en XML [Access et XML] - SQL/NoSQL - Programmation

Marsh Posté le 02-01-2006 à 15:43:33    

Bonjour à tous,
 
J'ai posé une question sur la partie XML du forum, mais sans succès... Cette question concerne également Access...
 
Je vous expose mon problème :
 
Je souhaiterai utiliser Access comme interface pour saisir un fichier XML avec une structure comme présentée ci dessous

Code :
  1. <album>
  2.   <personne>
  3.     <nom>
  4.     </nom>
  5.     <image>
  6.       <commentaire>
  7.       </commentaire>
  8.       <fichier>
  9.       </ficher>
  10.     </image>
  11.     <image>
  12.     ....
  13.     </image>
  14.   </personne>
  15.   <personne>
  16.   ...
  17.   </personne>
  18. </album>


J'ai essayé de réaliser une base de données et d'exporter le résultat, mais je ne peux exporter qu'une table et le résultat est très loin de ce que je souhaite. J'ai également essayé de le faire par reverse engeneering en important mon fichier XML et il me découpe cela en 2 tables sans jointure entre elles...
 
Comment dois-je procéder ? Je pense que mes données doivent être dans 2 tables différentes (une table pour les personnes et une avec les références des images) ayant une jointure. Dois-je faire un moteur de construction de mon fichier XML en VBA ou axiste-t'il un moyen que je n'aurai pas vu ?
 
Que dois-je faire et avez-vous des idées... Je me débrouille en VBA, un peu moins en XML. Je pense que je pourrai faire ce moteur mais s'il y a plus simple, je suis preneur...
 
Merci de vos réponses.


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 02-01-2006 à 15:43:33   

Reply

Marsh Posté le 02-01-2006 à 16:38:10    

Je pense qu'à la main c'est ce qu'il y a de plus simple.
 
A tout hasard, t'as la dernière version d'Access et que ce dernier implémente le support XML à la sauce SQL Server :
 
Fait une requête "simple" avec une bête jointure.
Et à la fin de ta requête, tapes "for xml auto".
 
Si ça plante, laisse tomber, si ça plante pas, creuse cette option "for xml ...", pour récupérer le contenu d'une requête au format XML.
 
Pour l'import, idem, avec SQL Server t'as un mode qui permet d'inésérer des données dans des tables à partir d'un fichier XML hirarchique, mais je ne me souviens plus de la syntaxe, et si ça existe sous Access, c'est de toute façon moins bordélique...
 
Dans tous les cas, un petit coup de DOM (objet MSXML) en VBA et ce sera à la fois plus souple et plus rapide je pense.
 
(rapide, à mettre en place, pas à l'éxécution hein ;))

Reply

Marsh Posté le 02-01-2006 à 16:43:07    

Je te remercie de cet eclaircissement, Arjuna... Je vois que entre 2 posts sur ton problème, tu te penche sur celui des autres... (je ne peux  malheureusement pas t'aider, là, désolé...).
 
J'ai Access 2002. Je vais voir ce qu'il peut faire avec les requêtes, mais j'en doute. Sinon, j'essaierai avec 2003 comme tu me l'as indiqué.
 
Sinon, je devrai le faire à la main.


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 02-01-2006 à 17:08:06    

Dans tous les cas, lire et écrire un fichier XML avec DOM, c'est tellement "simple" qu'à mon avis, tu passeras moins de temps à faire ça.

Reply

Marsh Posté le 02-01-2006 à 17:25:35    

Avec cette appli, je souhaite seulement générer le XML. Cette appli ne servira qu'à construire le fichier XML de façon convivial et le XML est destiné à être parser dans un explorateur avec une feuille XSL...
Je veux utiliser Access pour ces possibilités d'interface et d'enregistrement de données dans des tables organisées... Je n'envisage pas d'importer le xml car la base de données stocke les données et la mise à jour du fichier XML se fera par une édition d'un nouveau fichier...


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 04-01-2006 à 15:11:30    

Je l'ai fait à la main sans utiliser DOM (ce que je ne sais pas vraiment faire, je mélange tout entre ADO, ADOX, DOA..) :
 
Je fais une requête sur mes deux tables et je crée un fichier type text avec une extension XML.  
 

Code :
  1. Set fs = CreateObject("Scripting.FileSystemObject" )
  2. Set a = fs.CreateTextFile(".\fichiertest.xml", True)


 
Puis j'ajoute des lignes de texte à mon fichier XML en parcourant mon recordset et en faisant quelques traitements.  
 

Code :
  1. a.WriteLine ("ligne de texte rajoutée" )

 
 
C'est peut être pas très joli et un peu lent (je verrai quand j'aurai beaucoup d'enregistrements), mais ca marche....
 
 


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 04-01-2006 à 15:27:51    

Mise à part que DOM te permet de bosser proprement dans un objet représentant ton arbre XML, ta solution est très bien pour moi.
 
Au moins, elle est lisible, et compréhensible par le premier demeuré qui passe, ce qui est loin d'être le cas du code de beaucoup de "bons" développeurs.
 
En tout cas, moi je préfère faire un code pas optimisé, pas avec les meilleures solutions, mais que mon chien comprend, plutôt que de coder comme un troll du fond de sa carverne, et découvrir un jour que mon chien à fait sa valise et m'a quitté :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed