2016-10-09 9 views
-1

これは私のコードです。xmlファイルのすべてのデータがリストボックスに表示されますが、唯一欠けている属性は属性を取得しようとするときに問題があります表示されます。正確に何をするのか、私は何が欠けているのかは分かりません。私は前にXMLをやったことがない。リストボックスに表示するXML属性を取得する方法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; 
      } 

     } 

これらはxmlファイルの一部の要素です。Sexは属性です。あなたがあなたのコードを変更する必要が

<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

は単純な名前の不一致のように見えます。あなたの属性名は「性別」であり、「連絡先」ではありません。 –

+0

@JacobProffittそれでもリストボックスに表示されませんでした – Angel

+0

タグはありますか?それ以外の場合、XMLは無効です。多分Contactは他の値の親ノードです – Dijkgraaf

答えて

2

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はあなたが探しているものですか? – mbadeveloper

+0

私はそれをリストボックスに表示していないことを既に試していました – Angel

+0

@Angelリストボックスに表示したいものをあなたに教えてもらえますか?性別のみ、性別、性別、性別は? – mbadeveloper

関連する問題