Degeim Skrevet 10. mai 2006 Del Skrevet 10. mai 2006 (endret) Jeg har følgende XML-fil: <?xml version="1.0"?> <Spel> <Grupper> <Gruppe> <Spelarar>Spelar 1 og Spelar 2</Spelarar> <Kampar> <Kamp>Kamp1</Kamp> <Kamp>Kamp2</Kamp> <Kamp>Kamp3</Kamp> </Kampar> </Gruppe> <Gruppe> <Spelarar>Spelar 1 og Spelar 3</Spelarar> <Kampar> <Kamp>Kamp1a</Kamp> <Kamp>Kamp2a</Kamp> <Kamp>Kamp3a</Kamp> </Kampar> </Gruppe> </Grupper> </Spel> Ved oppstart blir filen lastet inn slik: LesSR = New System.IO.StreamReader("kampar.xml") XML = New System.Xml.XmlTextReader(LesSR) Kampar = New System.Xml.XmlDocument Kampar.Load(XML) Så laster jeg inn alle <Spelarar>-taggene i en combobox,som da blir seende slik ut: Spelar 1 og Spelar 2 Spelar 1 og Spelar 3 Følgende kode blir eksekvert ved SelectedIndexChanges på comboboxen,og skal legge alle <Kamp>-taggene under den nå valgte <Spelarar>-taggen. Altså hvis man velger "Spelar 1 og Spelar 2", skal det komme følgende i listboxen: Kamp1 Kamp2 Kamp3 Og dette bruker jeg følgende kode til: Dim mKampar As System.Xml.XmlNodeList = Kampar.SelectNodes("Spel/Grupper/Gruppe/Kampar/Kamp") ListBox1.Items.Clear() For i = 0 To mKampar.Count - 1 ListBox1.Items.Add(mKampar.Item(i).InnerText) Next i Problemet med den er at følgende kommer i listboxen: Kamp1 Kamp2 Kamp3 Kamp1a Kamp2a Kamp3a Dette er jo ganske naturlig, siden jeg ber om å få ALLE <Kamp>-taggene. Så spørsmålet mitt er: Hvordan får jeg inn KUN de under den valgte <Spelarar>-taggen? Takk, Degeim Endret 10. mai 2006 av Degeim Lenke til kommentar
oyvind_b Skrevet 11. mai 2006 Del Skrevet 11. mai 2006 Tror det skal fungere med følgende: Dim mKampar As System.Xml.XmlNodeList = Kampar.SelectNodes ("Spel/Grupper/Gruppe/Kampar/Kamp[../../Spelarar='" + spillerCombo.Text + "']") ListBox1.Items.Clear() For i = 0 To mKampar.Count - 1 ListBox1.Items.Add(mKampar.Item(i).InnerText) Next i Øyvind Lenke til kommentar
Manfred Skrevet 12. mai 2006 Del Skrevet 12. mai 2006 Er det ikke enklere å hente ut alle grupper i en XmlNodeList? Så bruker du selectedindex som samsvarer med indexen i dropdownboksen og hvilken XmlNodeList du skal selecte fra? Sitter ikke på min maskin, så jeg får ikke testet nå, men synes dere gjør det forferdelig tumlete. Man mister liksom fordelene med XML om man skal gjøre det så tumlete og manuelt.. Lenke til kommentar
Degeim Skrevet 12. mai 2006 Forfatter Del Skrevet 12. mai 2006 Jeg setter pris på alt, Manfred:). Kjempeflott om du kunne forenkle arbeidet mitt litt! Lenke til kommentar
Manfred Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 (endret) Jeg orker ikke skrive så mye her nå Men jeg kan vise deg et eksempel fra det jeg har her (Dette er C#, men jeg regner med du klarer å lese det, og forstå prinsippet): Følgende xml: <result> <node> <data1>Data 1-1</data1> <data2>Data 1-2</data2> </node> <node> <data1>Data 2-1</data1> <data2>Data 2-2</data2> </node> ... </result> (henter xml fra en webadresse) XmlDocument xDoc = new XmlDocument(); using (System.Net.WebClient wc = new System.Net.WebClient()) { xDoc.LoadXml(wc.DownloadString(address)); } Response.Write("Laster xml fra web...(" + address + ")<br>"); XmlNodeList xList = xDoc.GetElementsByTagName("node"); Response.Write("Antall noder i listen: " + xList.Count + "<br><br>"); foreach (XmlNode xNode in xList) { //Her har du da tak i en og en <node> } Første runde i foreach'en har du da alle under første <node>. Så da kan du igjen hente ut xNode.SelectSingleNode("Data1"); // gir deg "Data 1-1" Det jeg da mente med indexer var jo som følger: Hvis du tenker deg rett før foreachen min: (ikke testet, men her har du prinsippet) XmlNode dataenjegskalha = xList[dropdown.SelectedIndex]; dataenjegskalha.SelectSingleNode("kamp1"); // osv... Var det nesten litt forsåelig? Det er litt tidlig på dagen Si ifra hvis det er noe mer du lurer på Endret 16. mai 2006 av Manfred Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå