Lister les noeuds d'un XML [Résolu]

Messages postés
68
Date d'inscription
jeudi 19 septembre 2002
Dernière intervention
22 février 2008
- - Dernière réponse : Encore1ben
Messages postés
68
Date d'inscription
jeudi 19 septembre 2002
Dernière intervention
22 février 2008
- 26 juil. 2007 à 18:15
Bonjour,

Avec un peu de retard, je me décide à mettre à la retraite mes loyaux fichiers INI, et de passer le tout en XML...

Après avoir un peu galéré pour assimiler la création de noeuds et d'enfants, je décide enfin de pouvoir lister les noeuds d'un fichier pour remplir une listbox.

Ma question est donc : Y'a t il un équivalent du "Readsection" des fichiers INI ? Et si oui, peut on lire de noeuds éloignés dans un fichier ? (voir exemple ci dessous)

Pour mon example, j'ai un fichier XML qui contient des informations sur des animaux.

> Type Animaux
>>Chien
>>>Nom: Poppy
>>>Age: 15 ans
>>>Nom: Doudou
>>>Age: 99 ans
>>Chat
>>>Nom: Doris
>>>Age: 1 ans
>>Zebre
>>>Nom: Kikoo
>>>Age: 8 ans

Et en gros, je souhaiterais lister automatiquement, les noeuds >>, soit chien, chat, zebre dans une listbox !

Merci d'avance à vous !




-----------------------------------------------------------

"No Comment ! Just Act..."
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
103
Date d'inscription
mardi 11 avril 2006
Dernière intervention
4 mars 2009
3
Merci
Bonjour Encore1ben,

Je te propose de regarder ce source : Gestionnaire de fichiers de configuration.

L'unité SxConfiguration permet d'écrire puis lire un fichier de configuration.

Partie écriture ...

uses TSxConfiguration;
...

var Configuration, Famille, Animal: TSxConfiguration;
...

// Création de l'objet principal
Configuration := TSxConfiguration.Create;

// Création de l'objet famille chien et inscription des paramètres
Famille := TSxConfiguration.Create(Configuration);
Famille.Name := 'chien';

Animal := TSxConfiguration.Create(Famille);


Animal.Name := 'Poppy';
Animal.addValue('âge', 15);

Animal := TSxConfiguration.Create(Famille);


Animal.Name := 'Doudou';
Animal.addValue('âge', 99);


// Création de l'objet famille chat et inscription des paramètres

Famille := TSxConfiguration.Create(Configuration);

Famille.Name := 'chat';


Animal := TSxConfiguration.Create(Famille);


Animal.Name := 'Doris';
Animal.addValue('âge', 1);



// Création de l'objet famille zèbre et inscription des paramètres


Famille := TSxConfiguration.Create(Configuration);


Famille.Name := 'zèbre';



Animal := TSxConfiguration.Create(Famille);


Animal.Name := 'Kikou';



Animal.addValue('âge', 8);


...

// La sauvegarde
Configuration.SaveToFile('C:\Mon soft\cfg\configuration.cfg');

Partie lecture ...

uses TSxConfiguration;

...


var
  Configuration, Famille, Animal: TSxConfiguration;
  IndexFamille, IndexAnimal: Integer;

...


// Création de l'objet principal

Configuration := TSxConfiguration.Create;

// Lecture du fichier de configuration
Configuration.LoadFromToFile('C:\Mon soft\cfg\configuration.cfg');
...

for IndexFamille := 0 to Configuration.Count-1 do
begin
  Famille := Configuration.Item[IndexFamille];
  for IndexAnimal := 0 to Famille.Count-1 do
  begin
    Animal := Famille.Item[IndexAnimal];

    // Famille.Name contient le nom de la famille (chien, chat ...)
    // Animal.Name contient le nom de l'animal
    // Animal.getValue('âge') contient l'âge de l'animal
  end;
end;

Si tu souhaites plus de renseignements, n'hésites pas à me le faire savoir ...

sylvunix.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de sylvunix
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
30 juillet 2009
1
Merci
salut,

pour parcourir les enfant d'un noeud:

utilise
aNode := aParentNode.ChildNodes.First;
if assigned(aNode) then
repeat
Xxxx
aNode := aNode.NextSibling; //la doc de Delphi est fausse. Ceci ne raise pas.
untile not assigned(aNode);

ou

for i : = 0 to aParentNode.ChildNodes.Count-1 do begin
  aNode := aParentNode.ChildNodes.Get(i);
 Xxxx
end;

bon code,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Commenter la réponse de cs_Loda
Messages postés
68
Date d'inscription
jeudi 19 septembre 2002
Dernière intervention
22 février 2008
0
Merci
Merde sous Opera, y'a pas de saut de ligne ???? Il faut les taper en html ????


Bonjour, Avec un peu de retard, je me décide à mettre à la retraite mes loyaux fichiers INI, et de passer le tout en XML... Après avoir un peu galéré pour assimiler la création de noeuds et d'enfants, je décide enfin de pouvoir lister les noeuds d'un fichier pour remplir une listbox.

Ma question est donc : Y'a t il un équivalent du "Readsection" des fichiers INI ? Et si oui, peut on lire de noeuds éloignés dans un fichier ? (voir exemple ci dessous)

Pour mon example, j'ai un fichier XML qui contient des informations sur des animaux.

> Type Animaux

>>Chien >>>Nom: Poppy

>>>Age: 15 ans

>>>Nom: Doudou

>>>Age: 99 ans

>>Chat

>>>Nom: Doris

>>>Age: 1 ans

>>Zebre

>>>Nom: Kikoo

>>>Age: 8 ans

Et en gros, je souhaiterais lister automatiquement, les noeuds >>, soit chien, chat, zebre dans une listbox ! Merci d'avance à vous !


-----------------------------------------------------------

"No Comment ! Just Act..."
Commenter la réponse de Encore1ben
Messages postés
68
Date d'inscription
jeudi 19 septembre 2002
Dernière intervention
22 février 2008
0
Merci
Merci pour vos réponses à tous les 2 !!! Mais bizarrement, je n'arrive pas à l'appliquer...


Je vais retenter le coup, mais quand il n'existe pas de childnodes, à un noeud, delphi plante avec une violation d'accès... Je comprends pas tout !!!???
Commenter la réponse de Encore1ben

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.