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

Encore1ben 68 Messages postés jeudi 19 septembre 2002Date d'inscription 22 février 2008 Dernière intervention - 23 juil. 2007 à 16:21 - Dernière réponse : Encore1ben 68 Messages postés jeudi 19 septembre 2002Date d'inscription 22 février 2008 Dernière intervention
- 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
sylvunix 103 Messages postés mardi 11 avril 2006Date d'inscription 4 mars 2009 Dernière intervention - 24 juil. 2007 à 08:58
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.

Merci sylvunix 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de sylvunix
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 24 juil. 2007 à 08:38
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
Encore1ben 68 Messages postés jeudi 19 septembre 2002Date d'inscription 22 février 2008 Dernière intervention - 23 juil. 2007 à 16:23
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
Encore1ben 68 Messages postés jeudi 19 septembre 2002Date d'inscription 22 février 2008 Dernière intervention - 26 juil. 2007 à 18:15
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.