tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
2988
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    FroxX FroxX ist offline Mitglied
    Registriert seit
    Feb 2004
    Ort
    NRW
    Beiträge
    13
    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
     
    FroxX
    My World
    Programmieren, News, Blog, ...
    http://froxx.kilu.de

  2. #2
    engelmarkus engelmarkus ist offline Mitglied Brokat
    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 );
    }
     

  3. #3
    FroxX FroxX ist offline Mitglied
    Registriert seit
    Feb 2004
    Ort
    NRW
    Beiträge
    13
    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?
     
    FroxX
    My World
    Programmieren, News, Blog, ...
    http://froxx.kilu.de

  4. #4
    engelmarkus engelmarkus ist offline Mitglied Brokat
    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)
     

  5. #5
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Das funktioniert aber nur mit .NET 3.5 und Linq
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  6. #6
    engelmarkus engelmarkus ist offline Mitglied Brokat
    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.
     

  7. #7
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    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 Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  8. #8
    chrisonline1205 chrisonline1205 ist offline Grünschnabel
    Registriert seit
    Jul 2009
    Beiträge
    1
    Zitat Zitat von FroxX Beitrag anzeigen
    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?
    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

  1. C# Grid durchlaufen und bestimmte Spalte auslesen
    Von StefanLausL im Forum .NET Web und Kommunikation
    Antworten: 0
    Letzter Beitrag: 28.05.09, 10:24
  2. Personen, PKW,...
    Von perle93 im Forum Cinema 4D
    Antworten: 10
    Letzter Beitrag: 15.10.07, 13:17
  3. Antworten: 1
    Letzter Beitrag: 11.10.07, 12:07
  4. Personen ausschneiden
    Von Felix_W im Forum Photoshop
    Antworten: 8
    Letzter Beitrag: 15.03.04, 16:36
  5. Personen frestellen
    Von I-Face im Forum Photoshop
    Antworten: 2
    Letzter Beitrag: 06.10.01, 23:12

Stichworte