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 :
- Public Function Remplir() As String
- Dim doc As New XmlDocument
- doc.Load(Dossier & "\xml\" & XmlFile)
- Dim mNodeRoot As XmlNode
- mNodeRoot = doc.DocumentElement
- Remplir &= ToScript("var root = menu.addItem('" & mNodeRoot.Attributes(0).InnerText & "')" )
- Dim mNodeChild As XmlNode
- mNodeChild = mNodeRoot.FirstChild
- Dim i1 As Integer = 0
- Do Until mNodeChild Is Nothing
- Remplir &= ToScript("var " & mNodeChild.Name & i1.ToString & " = root.addItem('" & mNodeChild.Attributes(0).InnerText & "')" )
- Dim mNodeChild2 As XmlNode
- mNodeChild2 = mNodeChild.FirstChild
- Dim i2 As Integer = 1
- Do Until mNodeChild2 Is Nothing
- Remplir &= ToScript("var " & mNodeChild2.Name & i2.ToString & " = " & mNodeChild2.ParentNode.Name & i1.ToString & "')" )
- Dim mNodeChild3 As XmlNode
- mNodeChild3 = mNodeChild2.FirstChild
- Dim i3 As Integer = 1
- Do Until mNodeChild3 Is Nothing
- Remplir &= ToScript("var " & mNodeChild3.Name & i3.ToString & " = " & mNodeChild3.ParentNode.Name & i2.ToString & "')" )
-
- ' ainsi de suite, autant qu'il y a d'enfant
- mNodeChild3 = mNodeChild3.NextSibling
- i3 += 1
- Loop
- mNodeChild2 = mNodeChild2.NextSibling
- i2 += 1
- Loop
- mNodeChild = mNodeChild.NextSibling
- i1 += 1
- Loop
- End Function
|
et le XML associé :
Code :
- <?xml version="1.0" encoding="utf-8" ?>
- <Niv1 label="Sommaire" link="" target="">
- <Niv2 label="sous-menu1" link="" target="">
- <Niv3 label="sous-sous-menu1" link="" target="">
- <Niv4 label="sous-sous-sous-menu5" link="" target=""></Niv4>
- <Niv4 label="sous-sous-sous-menu6" link="" target="">
- <Niv5 label="sous-sous-sous-sous-menu1d" link="" target=""></Niv5>
- </Niv4>
- <Niv4 label="sous-sous-sous-menu7" link="" target=""></Niv4>
- </Niv3>
- </Niv2>
- <Niv2 label="Sous-menu2" link="" target="">
- <Niv3 label="sous-sous-menu1" link="" target=""></Niv3>
- </Niv2>
- <Niv2 label="sous-menu3" link="" target="">
- <Niv3 label="sous-sous-menu1" link="" target=""></Niv3>
- <Niv3 label="sous-sous-menu3" link="" target=""></Niv3>
- <Niv3 label="sous-sous-menu4" link="" target=""></Niv3>
- </Niv2>
- <Niv2 label="sous-menu4" link="" target=""></Niv2>
- </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