Parcourir fichier XML [Résolu]

Messages postés
7
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
3 juin 2007
- - Dernière réponse : marvenjabloun
Messages postés
7
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
3 juin 2007
- 16 mai 2007 à 18:34
salut tou le monde

voila j ai cette fichier xml  qui s appelle classe.xml la voila :

<?xml version= "1.0" encoding="iso-8859-1" ?>






[file:///C:/Documents%20and%20Settings/Administrateur/Bureau/Eprofilea/Fichiers%20systeme/Parametres/Classes.xml#

-

]

<


ClassesEprofilea


>









[file:///C:/Documents%20and%20Settings/Administrateur/Bureau/Eprofilea/Fichiers%20systeme/Parametres/Classes.xml#

-

]

<


Classe
instituteur


="

Marie

"


annee


="

2004/2005

"


niveau


= "

CM1

"
>











 




 



<


Eleve


prenom


="

Maud

"


nomAbrege


= "


"


nom


="

Roger

"
/>











 



<


Eleve


prenom


="

Maxime

"


nomAbrege


= "

B

"


nom


="

Bernard

"
/>









 



</


Classe


>











[file:///C:/Documents%20and%20Settings/Administrateur/Bureau/Eprofilea/Fichiers%20systeme/Parametres/Classes.xml#

-

]

<


Classe
instituteur


= "

Marie

"


annee


="

2003/2004

"


niveau


= "

CE2

"
>











 



<


Eleve


prenom


="

Allan

"


nomAbrege


= "


"


nom


="


"
/>











 



<


Eleve


prenom


="

Alexandre

"


nomAbrege


="


"


nom


="


"
/>























 



</


Classe


>













 




 



</


ClassesEprofilea


>

 


 














En effet je veux remplir un check list box par les noms et les prenoms des eleves contenu dans le fichiers xml classes.xml









et je pense ke j ai un probleme d acceder a ces valeur voila la procedure que j essaye d utiliser j espere que vous puissiez localiser la faute  ( l erreur qui se genere est : ACCESS VIOLATION AT ADRESS 004C7AA9 IN MODULE REGARD.EXE  c est  l erreur que je rencontre le plus souvent et qui me demoralise beaucoup)
ou proposer une autre solution aussi









procedure TFaccess.remplissage(Sender: TObject);









var
 eleve:ixmlnode;
   i ,k : integer;
prenomeleve,prenomnomeleve,nomeleve: string;
begin









{\\charger le fichier classe.xml}









 XMLClasses.LoadFromFile(ExtractFilePath(Application.ExeName)
    + FichierClasse) ;











 








{\\lire les valeurs des attributs nom et prenom de noeud eleve}









for i := 0 to XMLClasses.DocumentElement.ChildNodes.Count -1 do



begin








eleve:= FFonctionsUtiles.GetChildNodeByName( XMLClasses.DocumentElement.ChildNodes.Nodes[i],'eleve');






k:=0;
while eleve<>nil  do











\\recuperer
les valeurs d attribut



    nomeleve := eleve.ChildNodes.Nodes[k].AttributeNodes.
      FindNode(nom).Text;
     prenomeleve:= eleve.ChildNodes.Nodes[k].AttributeNodes.
      FindNode(prenom).Text;










k:=k+1;
end;









  







\\l
affichage (j ai pas de probleme la dedan)



    nomprenomeleve := prenomeleve+'  '+ nomeleve  ;













 







    j := 0;
    while j < CheckListBoxapprenant.Items.Count do
      if CheckListBoxapprenant.Items[j] = nomprenomeleve
      then j := CheckListBoxapprenant.Items.Count + 1
      else inc(j);
    if j <> CheckListBoxapprenant.Items.Count + 1
    then CheckListBoxapprenant.Items.Add(nomprenomeleve);
  end;
  
end;









 
Afficher la suite 

2 réponses

Messages postés
446
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
3
0
Merci
Bonjour,
Et en débogage, cela plante où ?

Sinon, dans l'ide , quand tu as ce message d'erreur :'Chercher' puis 'Erreur d'exécution' et tu rentres l'adresse de l'erreur .

Dom
Commenter la réponse de dominique.stock
Messages postés
7
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
3 juin 2007
0
Merci
En effet,j ai plus d erreur de violation d acces des que j ai mis le test  eleve<>nil de boucle while  mais  le probleme c qu 'il prend eleve toujours pour nil c a dire je peu pas recuperer le noeud eleve et apparament c ça le probleme moi j ai utiliser dans le code ci dessus la fonction GetChildNodeByName dont voila le code:
{ **************************************************************************** }
{ Function GetChildNodeByName                             }
{                                                                              }
{ Paramètre :   Node, racine de l'arbre XML                                    }
{               ChildNodeName, nom du noeud cherché                            }
{                                                                              }
{ Retourne un noeud de l'arbre XML dont on donne le nom. Retourne NULL si le   }
{ noeud n'est pas dans l'arbre.                                                }
{                                                                              }
{ **************************************************************************** }
function TFFonctionsUtiles.GetChildNodeByName(Node : IXMLNode; ChildNodeName
  : string) : IXMLNode;
var j: Integer;
    res: IXMLNode;
begin
  j := 0;
  res := nil;
  with Node.ChildNodes do
  begin
    res := FindNode(ChildNodeName);
    while (res = nil) and (j < Count) do
    begin
      res := GetChildNodeByName(Nodes[j], ChildNodeName);
      j := j + 1;
    end;
    GetChildNodeByName := res;
  end;
end;

cette fonction est validé et j ai deja testé (c pas moi qui a ecrit)
mais generalment si on a un fichierXMl comme la mienne la au dessu si je veux reccuperer les valeur des attributs de balise eleve comment on fait ???
Commenter la réponse de marvenjabloun