Huhu,
ich hatte ein ähnliches Problem schon einmal aber ich sollte einen neuen thread eröffnen.
2 XML Dateien hab ich über Klassen Wrapper geloest, die habe ich allerdings auch umschreiben müssen und der Datensatz war nicht alzu gross.
Diese folgende Datei hat weit ueber 1800 zeilen, das ist zuviel.
Nun, ich schaff es nicht, mit LINQ alle Datensätze auszulesen, wenn "nur" ein Childknoten aus einem Childknoten besteht.
Hier etwas Code zur Übersicht:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| private void combobox_searchfrage_de(object sender, EventArgs e) { ListViewItem item = new ListViewItem(); Listview.Items.Clear(); Listview.Columns.Clear(); Listview.Columns.Add("Index", 20, HorizontalAlignment.Left); Listview.Columns.Add("Heft", 30, HorizontalAlignment.Left); Listview.Columns.Add("Fragen", 200, HorizontalAlignment.Left);
XDocument doc = XDocument.Load("fragen_de.xml"); var fragen = from Gliederung_de in doc.Descendants("Gliederung_de") select new { HEFT_theme = (string)Gliederung_de.Attribute("name").Value, HEFT_id = (string)Gliederung_de.Element("HEFT").Attribute("ID").Value, HEFT_name = (string)Gliederung_de.Element("HEFT").Value }; if (File.Exists("fragen_de.xml")) { foreach (var root in fragen ) { if (sender == combo_spezial) { if (combo_spezial.SelectedIndex == 0) { item = Listview.Items.Add(root.HEFT_theme); item.SubItems.Add(root.HEFT_id); item.SubItems.Add(root.HEFT_name); } } } } } |
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| <?xml version="1.0" encoding="utf-8" ?>
<HEFT_frage> <Deutsch> <Frage> <Gliederung_de name ="A"> <HEFT ID ="24">Hier ist Frage 1</HEFT> <HEFT ID ="47">Hier ist Frage 2</HEFT> <HEFT ID ="52">Hier ist Frage 3</HEFT> </Gliederung_de> <Gliederung_de name ="B"> <HEFT ID ="24">Hier ist Frage 4</HEFT> <HEFT ID ="47">Hier ist Frage 5</HEFT> <HEFT ID ="52">Hier ist Frage 6</HEFT> </Gliederung_de> </Frage> </Deutsch> </HEFT_frage> |
Ich brauche erstmal alle Inhalte von "Gliederung_de", nicht nur 1.
Bisher wird mir aus der foreach Iteration nur 1 angezeigt.
(Die XML Datei moechte ich nicht aendern)
Bitte um Rat.