2016-10-09 2 views
-1

Das ist mein Code Ich habe alle Daten von XML-Datei zu einem Listenfeld die einzige fehlende ist das Attribut Ich habe einige Schwierigkeiten beim Versuch, das Attribut zu bekommen erscheinen. nicht sicher, was genau zu tun ist oder was ich vermisse. Ich habe noch nie zuvor XML gemacht.Wie bekomme ich ein XML-Attribut in einer Listbox C#

string startPath = Application.StartupPath + "\\ContactManager.xml"; 
     XmlTextReader textReader = new XmlTextReader(startPath); 
     string Names = ""; 
     string sex = ""; 

     while (textReader.Read()) 
     { 
      switch (textReader.NodeType) 
      { 
       case XmlNodeType.Attribute: 
        sex = textReader.GetAttribute("Sex"); 
        break; 
       case XmlNodeType.Element: 
        Names = textReader.Name; 
        break; 
       case XmlNodeType.Text: 
        Console.WriteLine(); 
        lbDisplay.Items.Add(sex + Names + ": " + textReader.Value); 
        break; 
      } 

     } 

dies sind nur einige der Elemente in der XML-Datei Sex das Attribut.

<Contact Sex="M"> 
<FirstName>Mickey</FirstName> 
<LastName>Mouse</LastName> 
<PhoneNumber>401-555-1212</PhoneNumber> 
<FaxNumber>401-666-6666</FaxNumber> 
<EmailAddress>[email protected]</EmailAddress> 
</Contact> 
+0

aussieht wie ein einfacher Namenskonflikt. Ihr Attributname lautet "Sex", nicht "Kontakt". –

+0

@JacobProffitt Ich habe versucht, dass immer noch nicht in der Liste angezeigt – Angel

+0

Gibt es eine Tag? Ansonsten ist diese XML ungültig. Es sieht so aus, als ob Contact der übergeordnete Knoten für die anderen Werte ist. – Dijkgraaf

Antwort

2

Sie müssen Ihren Code ändern:

string startPath = Application.StartupPath + "\\ContactManager.xml"; 
    XmlTextReader textReader = new XmlTextReader(startPath); 
    string Names = ""; 
    string sex = ""; 

    while (textReader.Read()) 
    { 
     switch (textReader.NodeType) 
     { 
      case XmlNodeType.Element: 
       Names = textReader.Name; 
       if(textReader.Name == "Contact") sex = textReader.GetAttribute("Sex"); 
       break; 
      case XmlNodeType.Text: 
       Console.WriteLine(); 
       lbDisplay.Items.Add(sex + Names + ": " + textReader.Value); 
       break; 
     } 

    } 
+0

@Angel ist das wonach Sie suchen? – mbadeveloper

+0

ich habe versucht, dass es schon nicht in der Listbox angezeigt wird – Angel

+0

@Angel können Sie mir erklären, was Sie in der Listbox anzeigen möchten? das Geschlecht nur oder der Vorname, Nachname und Geschlecht? – mbadeveloper

Verwandte Themen