Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PETITE GESTION DE FICHIER XML UTILISANT LE DOM EN VB6 - TUTORIEL EXEMPLE.


Information sur la source

Catégorie :Base de Donnees Classé sous : dom, xml, msxml, tutoriel, cours Niveau : Débutant Date de création : 14/11/2004 Date de mise à jour : 14/11/2004 17:00:36 Vu / téléchargé: 16 784 / 4 665

Note :
9,22 / 10 - par 18 personnes
9,22 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (28)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Xml est particulièrement intéressant pour gérer des fichiers à structure dynamique.
Par exemple : dans un fichier de personnes, je veux stocker des adresses mél. A priori, je ne sais pas combien d'adresses chaque personne possède. Dans une structure classique de fichier à accès direct, je prévois 5 champs pour être tranquille avec le risque d'être bloqué si une personne en possède davantage. Ou bien, je crée un champ texte dans lequel je concatène toutes les adresses en utilisant un sépérateur pour les récupérer ensuite. Il faut
néanmoins que je définisse une taille fixe pour ce champ texte et je retombe dans le même problème que pour le nombre de champs, c'est à dire de ne pas avoir suffisamment de place ou au contraire d'en gaspiller pour rien.
Dans un fichier xml, je vais pouvoir définir pour chaque utilisateur un noeud (l'équivalent de l'adresse d'un champ - ou même d'une liste de champs) pour les Méls et ce noeud contiendra autant de sous-noeuds (on dira plutôt de fils) Adresse que nécessaire (aussi bien 0 que 50 si la nécessité l'impose).
Je n'insisterai pas sur les autres intérêts de l'xml comme la naturelle structuration hiérarchique des données, les possibilités d'échange ou de récupération facilitées (essayez donc de faire une moulinette pour récupérer des données dans un fichier à accès direct dont vous ne connaissez pas la structure ni le source du programme qui a servi à le constituer ! En xml, la structure apparaît clairement dans n'importe quel Navigateur Web récent par un simple double-clic sur le nom du fichier).
Comme j'ai eu du mal à trouver des articles assez complets sur la syntaxe du DOM de Microsoft (les articles ID=5471 et ID=26155 de vbfrance m'ont beaucoup aidé - merci à leurs auteurs) et que j'ai pas mal tatonné avant d'arriver à comprendre la philosophie d'intervention dans la structure hierarchique, j'ai décidé de réaliser une petite gestion de fichier sans prétention qui, je l'espère, aidera les débutants à se lancer dans l'aventure. Ce gestionnaire, dont le source est joint avec un fichier exemple, permet de visualiser, ajouter, supprimer, modifier des données et réaliser une recherche simple (bref les fonctions indispensables que chacun pourra adapter pour son propre projet).
Je suis loin d'être un spécialiste dans le domaine et les remarques ou liens utiles seraient je crois très appréciés par tous (notamment un résumé de toutes les fonctions du DOM en français ! avec si possible un exemple d'appel depuis VB6). Je suis preneur.
 

Conclusion

Ce gestionnaire s'adresse aux débutants et j'ai documenté le source au maximum. Dans un soucis de clarté, je n'ai pas hésité à utiliser des variables intermédiaires afin de découper chaque action qui concerne le DOM (alors qu'une ligne aurait parfois suffit pour obtenir le même résultat). De plus, afin d'aborder un maximum de domaines, je me suis volontairement compliqué la vie en utilisant les attributs d'étiquettes pour stocker certaines informations (le nom de la personne), plutôt que de les mettre en zone texte (ce que je vous conseille de faire pour vos propres fichiers). Enfin, j'ai mis les nom de variables en français, et ça je crois que c'est un plus pour la compréhension d'un code (dans beaucoup les sources qui utilisent des éléments extérieurs comme les ActiveX, on se demande parfois si on a affaire à un nom de variable ou à une instruction).
Après téléchargement et décompression, je vous invite à double cliquer sur le fichier PGF.xml afin de l'ouvrir dans votre Navigateur Web pour le garder sous les yeux pendant que vous consulterez le source du programme (si vous faites des modifications dans le fichier et les sauvegardez, un appui sur F5 dans le Navigateur Web actualisera l'affichage de votre fichier).

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

14 novembre 2004 17:00:40 :
Pas de modif - j'avais cliqué sur la mauvaise rubrique (base de registre au lieu de base de donnée) ou alors mon doigt a glissé !

Commentaires et avis

signaler à un administrateur
Commentaire de Afyn le 14/11/2004 23:25:54

Bon code, bien décomposé et documenté.
Bravo !

Ca m'intérésserai de creuser un peu ...
Genre xml et odbc ... ou  ADO
xml et SQL ?

et évidemment xml & MIDI ...
(http://www.midi.org/dtds/midi_xml.shtml)

S'il y en a qui se sente du courage ...

Bonne prog

Afyn
Navedac

signaler à un administrateur
Commentaire de jmlucienvb le 15/11/2004 13:19:26

Cette source est très intéressante et me succite deux questions :
Le fichier pgf.xml est-il limité en taille ?
Pourrait-il être intégré dans un fichier de ressource ?

signaler à un administrateur
Commentaire de jmc70 le 15/11/2004 18:47:14

Je ne pense pas que le fichier xml soit limité en taille (jusqu'à la taille maximale tolérée par le système d'exploitation). Par contre, le mode d'utilisation qui utilise DOM impose un chargement complet en mémoire avant utilisation ce qui le limite en pratique à des fichiers de taille assez modeste. Il existe un autre mode d'utilisation qui passe par SAX en accès direct dans le fichier mais que je ne sais pas utiliser sous VB (voir par exemple sous java http://smeric.developpez.com/java/cours/xml/sax/
Sinon, qu'entendez-vous par "être intégré dans un fichier de ressource" ?

signaler à un administrateur
Commentaire de jmlucienvb le 16/11/2004 07:46:37

Je me demandais si un fichier xml une fois constitué pouvait être placé dans un fichier .RES comme une image ou un txt, afin de l'intégrer dans l'exe compilé d'un projet VB

signaler à un administrateur
Commentaire de sahli le 02/12/2004 01:25:13

Merci de ce code source qui est très intéressant

signaler à un administrateur
Commentaire de sahli le 02/12/2004 01:31:14

un bon programme

signaler à un administrateur
Commentaire de toctocrapide le 14/01/2005 10:54:55

Vraiment chapeau !!!! ca correspond exactement a mes besoins !!!!! merci beaucoup !!!! BRAVO !!!!

signaler à un administrateur
Commentaire de gilgarcia le 14/02/2005 08:33:29

Merci pour ce source bien documenté avec des exemples clairs.
Excellente qualité pour ce source.
Encore Bravo !!!

signaler à un administrateur
Commentaire de seiky le 01/03/2005 11:16:21

ton code source est illisible, et tu déclares mal tes variables (comme on le faisais avec le vieux Basic)

signaler à un administrateur
Commentaire de jmc70 le 01/03/2005 20:04:15

Bonjour Seiky,
je suis désolé d'avoir été aussi nul. Merci pour votre "0", j'essaierai de m'améliorer (ce petit programme était sans prétention mais j'ai passé pas mal de temps à essayer de rendre ce source clair pour la communauté).
Le vieux Basic permettait effectivement d'indiquer la nature d'une variable en ajoutant un caractère à la fin de son nom : par exemple un $ pour une chaîne, un % pour un entier etc, à une époque où la déclaration de variable n'était pas obligatoire (à noter que le "Option Explicit" n'est pas non plus obligatoire dans Visual Basic et que celui-ci continue à reconnaître les caractères de définition de type tel que je les ai utilisés - mais je ne le ferai plus dans Code Source, je vous le promets).
Je serai heureux de consulter bientôt vos sources afin de m'en inspirer pour mes futurs développements. Bonne programmation.

signaler à un administrateur
Commentaire de Xoh le 02/03/2005 16:00:29

A part la déclaration des variable, effectivement  un peu obsolète, très bon code, bien concu et commenté. Merci de ton travail, il va m'être très utile ;°)

signaler à un administrateur
Commentaire de Lvrimmo le 04/03/2005 07:50:14

Merci jmc70 pour cet excellent exemple de code.

Vous indiquez ci-dessus : "Par contre, le mode d'utilisation qui utilise DOM impose un chargement complet en mémoire avant utilisation ce qui le limite en pratique à des fichiers de taille assez modeste."

Qu'entendez-vous par "fichiers de taille assez modeste" ?

Est-ce la taille en ko du fichier xml, le nombre et la quantité des infos qu'il contient ? Enfin, quelle serait pratiquement la conséquence de l'utilisation avec DOM d'un gros fichier ?

Merci pour votre attention.

Victor

signaler à un administrateur
Commentaire de jmc70 le 05/03/2005 18:08:54

Bonjour Lvrimmo,
j'ai généré dans la petite gestion, un fichier aléatoire de 32000 enregistrements (je ne suis pas allé au delà car j'utilise des variables entières dans le programme). Chaque enregistrement contient sept champs de 20 caractères ce qui donne en fin de compte un fichier d'un peu moins de 9 Mo (assez économe par rapport à un fichier à accès direct dont tous les champs occupent la même place, qu'ils soient pleins ou vides).
Le chargement du fichier, incluant la constitution de la liste des noms prend environ 6 sec. La sauvegarde de tout le fichier, moins de 4 sec. La mise à jour d'une fiche prend également 6 sec (dans pfg, le fichier est écrit sur le disque et la liste des noms est rechargée intégralement - ce qui peut expliquer cette lenteur). L'accès à une fiche est bien sûr instantané puisque tout le fichier est en mémoire (la recherche en plein texte plante, mais je n'ai pas cherché pourquoi).
J'ai fait les essais sur un portable Centrino à 1,5 Ghz sous XP Pro avec 512 Mo de Ram, le fichier étant sur un disque USB externe. J'avais arrêté et redémarré l'ordinateur pour purger la mémoire.
On peut bien sûr diminuer significativement ces temps d'attente en créant un fichier index séparé et en ne faisant la mise à jour sur le disque qu'à la fin de la session (ce qui présente un risque de perte de données en cas de panne de courant ou de plantage).
Ces performances restent modestes par rapport à un gestionnaire de base de données mais peut rendre déjà pas mal de services (il faut tout de même rentrer les 32000 fiches !)
J'ai aussi généré sans problème 50000 fiches (mais sans pouvoir les recharger du fait des variables entières - n'oublions pas que le programme était au départ destiné à gérer des petits fichiers !)
Amicalement

signaler à un administrateur
Commentaire de agnescol le 17/05/2005 17:22:44

merci beaucoup pour ce code, c'est exactement ce que je voulais ça m'a permis de gagner du temps vu que tout est très bien commenté

merci

signaler à un administrateur
Commentaire de scalpa98 le 19/09/2005 20:33:59

Bonjour !
Voulant me remettre à la programmation sous vb6 de façon un peu plus suivie...Je suis "tombé" sur votre article par hasard. Je désirerai améliorer quelques logiciels de calcul mental en ajoutant un module de base de données gérant les noms les classes les exos et les résultats. Je ne sais vers quoi m'orienter ADO ? ou Xml ? Peut on  créer des états dans ce dernier format ?
Qui est ce "DOM" dont vous parlez dans l'article....?
bravo pour vos prog et notamment 1000 mots que j'ai utilisé quand j'avais un ce1..

signaler à un administrateur
Commentaire de kosssi le 06/10/2005 18:34:26

Vraiment trop bien c'est exactement ca que je cherchais merci beacoup.

10/10

signaler à un administrateur
Commentaire de illumen75013 le 29/11/2005 14:18:25

Tres bien!
A encourager

signaler à un administrateur
Commentaire de syb007 le 21/12/2005 09:40:47

Un grand merci à toi pour cette petite mine d'or d'informations. C'est exactement ce qu'il me manquait pour démarrer réellement cette option de mon projet.

signaler à un administrateur
Commentaire de peug le 09/01/2006 12:14:11

Très intéressant ! Mais comment peut-on générer le fichier DTD ? Je serai étonné que l'on doivent développer nous-même le code de génération ! Pourtant la DLL msxml2.dll n'a aucune propriété qui semble s'en rapprocher quelqu'un à une idée sur ce sujet ?

signaler à un administrateur
Commentaire de danyflyn le 25/03/2006 15:48:34

Vraiment c'est juste ce que je cherchais a long temps sans réussir.
Cette source est vraiment très utile pour ceux que veulent utiliser XML en VB6, je peux dire même c'est un modèle.
Encore la façon comme vous commentez le code c'est incroyable. Vous êtes vraiment un grand professeur.
Merci beaucoup.

signaler à un administrateur
Commentaire de abraal le 14/06/2006 11:03:10

Merci trés bon code ....
Il m'a beaucoup aidé ==> 10/10 ;)

signaler à un administrateur
Commentaire de CDMac le 20/12/2006 11:53:21

Merci , tres utile pour moi aussi.
Les commentaires aident beaucoup à la compréhension.

signaler à un administrateur
Commentaire de bedthdb le 04/01/2007 16:54:45

Comme quoi, plus de 2 ans après sa publication, il y a encore des amateurs...
Merci, en ce qui me concerne j'utilise beaucoup l'xml en lecture, ce qui me permet de
réaliser des applications avec une maintenance déportée grâce à des fichiers de paramètres XML.
L'intérêt de cet exemple est aussi de montrer comment ajouter des records dans un fichier XML
Thierry

signaler à un administrateur
Commentaire de Red_Dragon le 15/05/2007 10:20:35

Toujours utile en effet de trouver des exemples et des explications, même sur des sujets que l'on pourrait croire connus de tous. Il y a toujours une première fois... Merci.

signaler à un administrateur
Commentaire de Polack77 le 27/07/2007 10:00:53

MERCI!!!
Je ne savais pas utiliser DOM (oui j'avais un peut honte, lol).
Ton exemple est vraiment bien, les commentaires sont nombreux et clairs.
Un petit bémol quand même pour les déclarations de variables qui sont il est vrais obsolète mais je note 10/10 aux vues des commentaires.

Parfait pour découvrir DOM.
Merci encore pour cette source qui va me faire gagner pas mal d'heures de testes.

:) Amicalement :)

signaler à un administrateur
Commentaire de moimadmax le 13/08/2007 13:51:14

He oui, ca sert vraiment toujours :)
Bien sur 10/10 je ne vais pas répeter les 24 commentaires positifs.
Merci jmc70.
Par contre 0/10 pour Seiki. Mais comme chantait Brassens.
Le temps ne fait rien à l'affaire quand on est con ... on est con

signaler à un administrateur
Commentaire de williom le 08/06/2008 15:38:42 10/10

Merci beaucoup pour cette source, très bien commentée.

signaler à un administrateur
Commentaire de fgombeaud le 27/12/2008 23:21:51 10/10

Exactement l'exemple que je cherchais. Merci pour toutes ces heures gagnées.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

tutoriel XML VB.NET [ par methkaff ] SalutJe suis à la recherche d'un tutoriel pour manipuler les fichier XML avec VB.NET et j'arrive pas à en trouver un.Est ce que quelqu'un ici présent XML Schema avec MSXML(VBA) [ par samouille666 ] Bonjour, je developpe une application dont une partie en VBA. Je genere des fichier XML. Je les valide avec une grammaire écrite à la main (les fameu XML DOM Ajouter un enregistrement [ par benat ] Bonjour, j'ai un fichier XML qui ressemble à ça: <Truc>     <Machin nom="1" >        &n MSXML et String [ par run_nahu ] Bonjour à tous.J'aurais besoin de votre aide cxar je connais assez mal MSXML et que je ne trouve rien de probant pour ce que je fais.Je m'explique:J'a Changer 1 info dans un fichier XML [ par Phil72000 ] Bonjour,Quelqu'un pourrait-il me dire comment modifier 1 seule donnée dans un fichier XML.En fait, j'ai un fichier XML (utf-8), créé par un code de ty Information sur le fichier en cours lu avec iTune [ par nord666 ] Salut à vous tous,Est-ce possible d'obtenir les informations d'un fichier que iTune est entrain de lire? Si, comment?Merci Tester si une macro est en cours d execution [ par helpvb ] Bonjour Sur mon document excel j ai un menu personnalisé avec des sous menus qui permettent a l utilisateur de declencher des macros vba Comment pourr petit problême de lecture de xml [ par veler ] Salut à tous, et Joyeux Noël.Suite à un problême toujour pas résolue qui se trouve iciJe pose ce poste parce que j'ai une question un tout petit peut Nouvelle question sur le xml, dsl [ par veler ] Salut, c'est encore moi, comme toujour, lol, bref,J'ai toruvé une solution pour lire le xml, mais un nouveau mur se met fasse à moi, dans mon fichier Trigger sur enregistrement en cours [ par totoalareunion ] Bonjour a tous,J'essaye de faire une chose qui me parait simple mais je n'y arrive pas, sur oracle 10g:Je veux mettre a jour un champ d'une table et l


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.