Entwickler-Ecke
IO, XML und Registry - Knoten und deren Inhalte in Abhängig aus xml Datei lesen
syntec - Mo 19.09.11 22:50
Titel: Knoten und deren Inhalte in Abhängig aus xml Datei lesen
Hallo an alle,
ich handtiere gerade mit dem XmlDocument herum, da ich Daten übersichtlich und einfach abspeichern möchte.
Jedenfalls dachte ich es, dass es einfacher wird.
Gerne möchte ich eine xml Datei auslesen, aber nur von bestimmte Knoten deren Inhalt.
Die Datei sieht von der Struktur folgendermaßen aus:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| <Eingänge> <Kanal> <Name>Eingang 1</Name> <Einheit>s</Einheit> <Einheit>min</Einheit> <Einheit>h</Einheit> <Comment>erster Eingang Zeit</Comment> </Kanal> <Name>Eingang 2</Name> <Einheit>mm</Einheit> <Einheit>m</Einheit> <Einheit>km</Einheit> <Comment>zweiter Eingang Volumen</Comment> </Kanal> |
Jetzt möchte ich in eine Listbox nur die Einheiten der zuvor ausgewählten Eingänge, sprich: <Name>XXX</Name>
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| foreach(XmlNode node in xmlDocument.SelectNodes("//Name")) { if(node.InnerText == strAuswahl) { listBox.Items.Add() ... } } |
Damit kann ich zwar auf den passenden Knoten drauf zugreifen, aber wie iterativ die Attribute auslesen. Wird bestimmt nicht umfangreich sein, finde aber leider keinen Ansatz.
Könnt ihr mir da bitte weiterhelfen?
Gruß,
dark-destination1988 - Di 20.09.11 09:08
Deine Liste von Einträgen an die listbox Datasource anhängen und listbox.DisplayMember="Name"
syntec - Di 20.09.11 19:15
Hallo und danke,
leider hilft mir das nicht weiter, da ich die Einträge (alle "Einheiten") ja aus der xml Datei auslesen möchte und dann in die Liste einfügen möchte.
mfg,
Trashkid2000 - Do 22.09.11 20:53
Hallo,
also so ganz habe ich das Problem nicht verstanden.
Aber ich versuche es trotzdem mal, Dir zu helfen. Mit LinQ To Xml ist die Welt gleich viel einfacher (jedenfalls, wenn man es einmal so halbwegs verstanden hat).
Poste hier einfach mal einen BeispielCode:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| XDocument doc = XDocument.Parse(Resources.TestXml); IEnumerable<XElement> kanalElements = doc.Descendants("Kanal");
var kanalElement = kanalElements.First(); string kanalName = kanalElement.Element("Name").Value;
IEnumerable<XElement> kanalEinheitenElements = kanalElement.Elements("Einheit");
IEnumerable<string> kanalEinheitenElementsValues = kanalEinheitenElements.Select(x => x.Value); |
Und nun muss bloß noch die Bindung bzw. Anzeige an der ComboBox realisiert werden.
LG
syntec - So 25.09.11 18:42
Hallo Marko,
Super, konnte heute deinen Vorschlag testen und hab es nach meinen Ansprüchen ummodeln und verwenden können. Vielen Dank dafür.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!