C#:帮助使用XML和多个帐户

时间:2015-02-02 15:19:09

标签: c# xml xml-serialization

我正在搞乱一些xml和c#但遇到了问题, 我有一个名为:application.login.xml的xml文件,其中包含:

<?xml version="1.0" encoding="utf-8" ?>
<account>

  <admin>
    <username>admin</username>
    <password>admin</password>
    <recht>admin</recht>
  </admin>

  <demo>
    <username>demo</username>
    <password>demo</password>
    <recht>user</recht>
  </demo>

</account>

但每当我尝试将其读入课程时:account.cs我收到以下消息:无法找到元素演示,管理员等的架构信息。

我用来反序列化的代码是:

XmlSerializer xSer = new XmlSerializer(typeof(account));
Console.WriteLine(xSer.Deserialize(fs));

那么如何设法将多个帐户存储到1 xml?

班级帐户的内容是:

namespace bedrijfManagement
{
    public class account
    {
         public string username, password, recht;
    }
}

2 个答案:

答案 0 :(得分:1)

您需要创建名为Accounts

的新类
public class Accounts 
{
    public List<Account> accounts{get;set;}

}

XmlSerializer xSer = new XmlSerializer(typeof(Accounts));
var result = (Accounts) xSer.Deserialize(fs);

,您的文件应该像

<accounts>   
<account>
        <username>admin</username>
        <password>admin</password>
        <recht>admin</recht>   
</account>  
 <account>
        <username>demo</username>
        <password>demo</password>
        <recht>user</recht>  
 </account> 
</accounts>

如果您使用

XmlSerializer xSer = new XmlSerializer(typeof(List<account>));

xml文件应该是这样的

<arrayofaccount>
<account>
    <username>admin</username>
    <password>admin</password>
    <recht>admin</recht>
  </account>
  <account>
    <username>demo</username>
    <password>demo</password>
    <recht>user</recht>
  </account>
</arrayofaccount>

答案 1 :(得分:0)

我在名为accountadmin的{​​{1}}课程中看不到任何属性。看起来你在代码和XML中都缺少一定程度的抽象。考虑如下的XML结构:

demo

应该可以反序列化为<accounts> <account> <username>admin</username> <password>admin</password> <recht>admin</recht> </account> <account> <username>demo</username> <password>demo</password> <recht>user</recht> </account> </accounts> 个对象的集合,因为它正是它的本质。在代码中,您将其反序列化为集合,而不是单个实例:

account