ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
2988
2988
EMPFEHLEN
-
Hiho,
ich habe diese XML-Datei:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<contacts> <contact> <person> <lastname>Wurst</lastname> <firstname>Hans</firstname> <email>hans@wurst.de</email> <phone>023444-3434344</phone> <country>Deutschland</country> </person> <person> <lastname>Zarasu</lastname> <firstname>Zergey</firstname> <email>z.zra@su.de</email> <phone>566-565656-565</phone> <country>Brochstejk</country> </person> </contact> </contacts>
Diese Daten, also jede Person will ich jetzt auslesen, um sie in einer ListView anzuzeigen.
Bisher habe ich folgenden Code, der aber logischerweise nur die erste Person ausliest.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
XmlDocument doc = new XmlDocument(); doc.Load(@"Contacts.xml"); XmlNode lastname = doc.SelectSingleNode("/contacts/contact/person/lastname"); ListViewItem item = new ListViewItem(lastname.InnerText); XmlNode firstname = doc.SelectSingleNode("/contacts/contact/person/firstname"); item.SubItems.Add(firstname.InnerText); XmlNode email = doc.SelectSingleNode("/contacts/contact/person/email"); item.SubItems.Add(email.InnerText); XmlNode phone = doc.SelectSingleNode("/contacts/contact/person/phone"); item.SubItems.Add(phone.InnerText); XmlNode country = doc.SelectSingleNode("/contacts/contact/person/country"); item.SubItems.Add(country.InnerText); listViewContacts.Items.Add(item); listViewContacts.Refresh();
Wie kann ich hier eine Schleife implementieren, die das für mich korrekt erledigt.
Bin für jede Hilfe dankbar.
Gruß,
FroxX
-
16.05.09 18:41 #2
- Registriert seit
- Sep 2007
- Beiträge
- 473
Das hier solltest du relativ leicht anpassen können:
Code csharp:1 2 3 4 5 6
XmlDocument xdoc = new XmlDocument(); xdoc.Load("Daten.xml"); foreach (XmlNode person in xdoc.SelectNodes("/contacts/contact/*")) { Console.WriteLine( person["firstname"].InnerText ); }
-
Danke dir, das ging ja echt schnell.
Der Vollständigkeit halber poste ich hier mal meinen angepassten Code.
Code :1 2 3 4 5 6 7 8 9 10 11 12
XmlDocument doc = new XmlDocument(); doc.Load(@"Contacts.xml"); foreach (XmlNode person in doc.SelectNodes("/contacts/contact/*")) { ListViewItem item = new ListViewItem(person["lastname"].InnerText); item.SubItems.Add(person["firstname"].InnerText); item.SubItems.Add(person["email"].InnerText); item.SubItems.Add(person["phone"].InnerText); item.SubItems.Add(person["country"].InnerText); listViewContacts.Items.Add(item); }
Gruß,
FroxX
PS: Wie kann man denn hier CSHARP-CODE machen?
-
16.05.09 19:20 #4
- Registriert seit
- Sep 2007
- Beiträge
- 473
Alternativ kannst du das ganze noch weiter abkürzen:
Code csharp:1 2 3 4 5 6 7 8 9
XmlDocument xdoc = new XmlDocument(); xdoc.Load("Daten.xml"); foreach (XmlNode person in xdoc.SelectNodes("/contacts/contact/*")) { ListViewItem lvi = new ListViewItem(person.ChildNodes.Cast<XmlNode>().Select(x => x.InnerText).ToArray()); listView1.Items.Add(lvi); listView1.Refresh(); }
Hierbei musst du nur vorsichtig sein, die Reihenfolge der Knoten in der XML-Datei spielt dabei eine Rolle!
Man erstellt eine CS-Codebox so: [ csharp]Geändert von engelmarkus (16.05.09 um 19:23 Uhr)
-
Das funktioniert aber nur mit .NET 3.5 und Linq
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
17.05.09 17:53 #6
- Registriert seit
- Sep 2007
- Beiträge
- 473
Da könnte ich jetzt genauso gut sagen, dass die gewünschte Framework-Version nie genannt wurde
.
Außerdem hab ich doch einen anderen Lösungs-Weg dargestellt.
-
Das war weder Beschwerde noch Rüge oder was auch immer sondern ledlich ein Hinweis für den, der es ausprobieren will
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
17.07.09 22:32 #8
- Registriert seit
- Jul 2009
- Beiträge
- 1
Muss dieses alte Thema nochmal eröffen

Bin soeben dabei auch ein XML Document einzulesen. Soweit klappt alles mit dem oben beschriebene Beispiel ABER
in meinem XML Document gibt es unter "nodes".
Code :1 2 3 4 5 6
XmlDocument xdoc = new XmlDocument(); xdoc.Load("c:\\temp\\test.xml"); foreach (XmlNode movie in xdoc.SelectNodes("/playnetworks/movies/*")) { string test = movie["original_title"].InnerText; string test3 = movie["regions"]["region"]["pictures"]["picture"]["url"].InnerText;
das ["regions"]["region"]["pictures"]["picture"] mit dem "url" kommt jetzt mehrmals pro movie vor.
Wie lese ich das aus? Beim ncähsten durchlauf ist der zeiger bereits beim nächsten movie...
Bitte um Hilfe!
Danke!
Ähnliche Themen
-
C# Grid durchlaufen und bestimmte Spalte auslesen
Von StefanLausL im Forum .NET Web und KommunikationAntworten: 0Letzter Beitrag: 28.05.09, 10:24 -
Personen, PKW,...
Von perle93 im Forum Cinema 4DAntworten: 10Letzter Beitrag: 15.10.07, 13:17 -
Eine zeichenkette(String) durchlaufen und die einzelnen Buchstaben auslesen in VBA?
Von rene2407 im Forum Office-AnwendungenAntworten: 1Letzter Beitrag: 11.10.07, 12:07 -
Personen ausschneiden
Von Felix_W im Forum PhotoshopAntworten: 8Letzter Beitrag: 15.03.04, 16:36 -
Personen frestellen
Von I-Face im Forum PhotoshopAntworten: 2Letzter Beitrag: 06.10.01, 23:12





Zitieren


Login





