Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
824 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [.net] pb de boucle ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[.net] pb de boucle ...

n°532744
cyril100
Posté le 06-10-2003 à 19:31:07  profilanswer
 

Voila j'ai un pb :
J'aimerais lire un XML, et tous ses noeuds enfants et ainsi de suite mais je ne connais pas le nombre d'enfant,
 
voici ma fonction: pour l'instant je n'ai encore pas trop regardé à l'optimiser car je ne vois pas comment on pourrait depasser cette limite
 

Code :
  1. Public Function Remplir() As String
  2.         Dim doc As New XmlDocument
  3.         doc.Load(Dossier & "\xml\" & XmlFile)
  4.         Dim mNodeRoot As XmlNode
  5.         mNodeRoot = doc.DocumentElement
  6.         Remplir &= ToScript("var root = menu.addItem('" & mNodeRoot.Attributes(0).InnerText  & "')" )
  7.         Dim mNodeChild As XmlNode
  8.         mNodeChild = mNodeRoot.FirstChild
  9.         Dim i1 As Integer = 0
  10.         Do Until mNodeChild Is Nothing
  11.             Remplir &= ToScript("var " & mNodeChild.Name & i1.ToString & " = root.addItem('" & mNodeChild.Attributes(0).InnerText  & "')" )
  12.             Dim mNodeChild2 As XmlNode
  13.             mNodeChild2 = mNodeChild.FirstChild
  14.             Dim i2 As Integer = 1
  15.             Do Until mNodeChild2 Is Nothing
  16.                 Remplir &= ToScript("var " & mNodeChild2.Name & i2.ToString & " = " & mNodeChild2.ParentNode.Name & i1.ToString  & "')" )
  17.                 Dim mNodeChild3 As XmlNode
  18.                 mNodeChild3 = mNodeChild2.FirstChild
  19.                 Dim i3 As Integer = 1
  20.                 Do Until mNodeChild3 Is Nothing
  21.                     Remplir &= ToScript("var " & mNodeChild3.Name & i3.ToString & " = " & mNodeChild3.ParentNode.Name & i2.ToString & "')" )
  22.  
  23. ' ainsi de suite, autant qu'il y a d'enfant
  24.                     mNodeChild3 = mNodeChild3.NextSibling
  25.                     i3 += 1
  26.                 Loop
  27.                 mNodeChild2 = mNodeChild2.NextSibling
  28.                 i2 += 1
  29.             Loop
  30.             mNodeChild = mNodeChild.NextSibling
  31.             i1 += 1
  32.         Loop
  33.     End Function


 
et le XML associé :
 

Code :
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <Niv1 label="Sommaire" link="" target="">
  3. <Niv2 label="sous-menu1" link="" target="">
  4.  <Niv3 label="sous-sous-menu1" link="" target="">
  5.   <Niv4 label="sous-sous-sous-menu5" link="" target=""></Niv4>
  6.   <Niv4 label="sous-sous-sous-menu6" link="" target="">
  7.    <Niv5 label="sous-sous-sous-sous-menu1d" link="" target=""></Niv5>
  8.   </Niv4>
  9.   <Niv4 label="sous-sous-sous-menu7" link="" target=""></Niv4>
  10.  </Niv3>
  11. </Niv2>
  12. <Niv2 label="Sous-menu2" link="" target="">
  13.  <Niv3 label="sous-sous-menu1" link="" target=""></Niv3>
  14. </Niv2>
  15. <Niv2 label="sous-menu3" link="" target="">
  16.  <Niv3 label="sous-sous-menu1" link="" target=""></Niv3>
  17.  <Niv3 label="sous-sous-menu3" link="" target=""></Niv3>
  18.  <Niv3 label="sous-sous-menu4" link="" target=""></Niv3>
  19. </Niv2>
  20. <Niv2 label="sous-menu4" link="" target=""></Niv2>
  21. </Niv1>


 
Si qqn à une idée ...
 
Une autre petite question :
je regarde les attributes de ces noeud et il ne sont pas forcement tous renseignè :  
mNodeChild5.Attributes(2).InnerText si Attributes(2) n'est pas renseignè, il me ressort une erreur, comment passer outre l'erreur

mood
Publicité
Posté le 06-10-2003 à 19:31:07  profilanswer
 

n°561157
alknon
Posté le 06-11-2003 à 18:15:36  profilanswer
 

utilise une function recursive genre:
 
private void ReadNode(XmlNode root, int parentLevel)
{
 ....
 foreach (XmlNode node in root.ChildNodes)
 {
  ...
  ReadNode(node, parentLevel+1);
  ...
 }
 ...
}

n°561158
alknon
Posté le 06-11-2003 à 18:17:03  profilanswer
 

if (mNodeChild5.Attributes.Contains("KEY" ))
{
 label.InnerHtml = mNodeChild5.Attributes["KEY"].InnerText;
}


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [.net] pb de boucle ...

 

Sujets relatifs
Interuption d'une boucle / J'apprends à faire un whileProblème avec boucle [résolu]
[python - nioube inside] boucle infinie qui fait planter mon GUI[C] Ajout d'un char en fin de chaine en boucle
modifier une boucle avec le clavier...boucle for et nom de variable dynamique
Update en boucle ?[Batch DOS] Générer une séquence de nombre pour une boucle...
le destructeur est il executé a chaque boucle ?gtk-1.2 : probleme dans une boucle gtk_events_pending
Plus de sujets relatifs à : [.net] pb de boucle ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR