2017-08-28 11 views
0

私はコードxmlをdeserelizeしてコンソールに印刷する方法は?

  [XmlRoot("user_list")] 
     public class UserList 
     { 
      public UserList() { Items = new List<User>(); } 
      [XmlAttribute("user")] 
      public List<User> Items{get; set; } 
     } 
     [XmlType("user")] 
     public class User 
     { 
      [XmlAttribute("id")] 
      public string Id{get; set; } 

      [XmlAttribute("name")] 
      public string Name{get; set; } 

     }   

    class Program 
    {  
     static void Main(string[] args) 
     { 
      Program o = new Program(); 
       o.Deser(); 
      List<User> p = new List<User>(); 

      foreach (User c in p) 
      { 
       Console.WriteLine(c.Id); 
       Console.WriteLine(c.Name); 
      }  
      Console.ReadKey(); 
     } 
      public void Deser() 
     { 
       List<User> users; 
    using (var reader = new StreamReader("fileXML.xml")) 
    { 
     XmlSerializer deserializer = new XmlSerializer(typeof(List<User>), 
      new XmlRootAttribute("user_list")); 
     users = (List<User>)deserializer.Deserialize(reader) 
    } 
    } 
} 

を持っていると、VSには、出力とエラーなしがありません私は何が間違っている?どのようなリストにデバッグモードが含まれているかをどのように確認できますか? デシリアライズの問題があるかもしれませんが、何がわからないのでしょうか。

は私を責めないでください(

ところでXMLは、あなたの方法の

<?xml version="1.0"?> 
<user_list> 
    <user> 
    <id>1</id> 
    <name>Joe</name> 
    </user> 
    <user> 
    <id>2</id> 
    <name>John</name> 
    </user> 
</user_list> 
+0

あなたのメソッドで返されないユーザー –

+0

あなたは 'o.Deser()'から何も返しません。あなたはそれを呼び出し、 'List p = new List ();'を実行し、空のリストの内容を出力しようとします。 – dbc

答えて

1

これを試してください:

[XmlRoot("user_list")] 
    public class UserList 
    { 
     public UserList() { } 
     [XmlAttribute("user")] 
     public List<User> Items { get; set; } 
    } 
    [XmlType("user")] 
    public class User 
    { 
     // [XmlAttribute("id")] 
     public string id { get; set; } 
     // [XmlAttribute("name")] 
     public string name { get; set; } 
    } 
+0

'XmlAttribute'あなたのXMLファイルを使用してになります。 ' <ユーザID = "1" 名前= "ジョー" /> <ユーザID = "2" 名= "ジョン" /> ' – Tcraft

0

変更署名されたテスト:

public static IEnumerable<User> Deser() 
    { /* all your code */ 
      return users; } 

と変更自分のメイン:

static void Main() 
    { 
      var users = Deser(); 
      /* your foreach */ 
    } 
+0

コメントをいただきありがとうございますが、まだ動作しません( ) - Deser()のユーザーの詳細を表示すると、すべてが "null"ですが、手動で追加すると効果はありません( –

関連する問題