foreach-Schleife wird übersprungen.

Jungbluth

Mitglied
Hallo,
ich eine foreach-Schleife ein einer weiteren foreach-Schleife und habe Probelm das die inner übersprugen wird.
C#:
oreach(XmlNode node in xml.GetElementsByTagName("zauber"))

            {

                var test = node.Attributes;

                string[] s = new string[3];

                foreach(XmlAttribute attribute in node)

                {

                    if(attribute.Name == "name")

                    {

                        s[0] = attribute.Value;

                    }

                    else if(attribute.Name == "repraesentation")

                    {

                        s[1] = attribute.Value;

                    }

                    else if(attribute.Name == "value")

                    {

                        s[2] = attribute.Value;

                    }

                }

                Zauber z = Aventurien.Zauber.GetByName(s[0],Aventurien.Zauber.RepToEnum(s[1]));

                Button b = new Button();

                b.Size = new Size(10, 10);

                b.Click += Btn_charakter_roll_Click;

                tbl_charakter_zauber.Rows.Add(z.Name,z.Eigenschaften,z.Komplexitaet,s[1],z.Merkmale,s[2],b);

            }
Die XML wird richtig geladen geladen und die Node hat auch Attribute.
Das innere Schleife übersprungen wird weiss weil ich direkt beim if einen Breakpoint habe.
 
Lösung
Wolltest du vielleicht foreach (XmlAttribute attribute in node.Attributes) schreiben? Das ist mir spontan in den Sinn gekommen, ohne die C#-API überhaupt zu kennen. Aber deine Debugzeile drüber lässt mich das vermuten.

Ansonsten: sehr gut, dass du einen Debugger schon benutzt hast! Falls das Obige nicht die Lösung ist, könntest du versuchen, beim foreach reinzusteppen ("step in", nicht "step over"), um zu sehen, über was das Programm wirklich versucht zu iterieren.
Wolltest du vielleicht foreach (XmlAttribute attribute in node.Attributes) schreiben? Das ist mir spontan in den Sinn gekommen, ohne die C#-API überhaupt zu kennen. Aber deine Debugzeile drüber lässt mich das vermuten.

Ansonsten: sehr gut, dass du einen Debugger schon benutzt hast! Falls das Obige nicht die Lösung ist, könntest du versuchen, beim foreach reinzusteppen ("step in", nicht "step over"), um zu sehen, über was das Programm wirklich versucht zu iterieren.
 
Zurück