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

C#: help using XML and multiple accounts

我正在处理一些 xml 和 c#,但 运行 遇到了问题, 我有一个名为 xml 的文件:application.login.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>

但每当我尝试将其读入 class 时:account.cs 我收到以下消息:找不到元素演示、管理员等的架构信息

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

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

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

class账号的内容是:

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

我在名为 admindemoaccount class 上没有看到任何属性。看起来您在代码和 XML 中都缺少抽象级别。考虑如下 XML 结构:

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

That 应该反序列化为 account 对象的集合,因为这正是它的本质。然后在代码中将其反序列化为一个集合,而不是单个实例:

XmlSerializer serializer = new XmlSerializer(typeof(List<account>));
List<account> accounts = serializer.Deserialize(xmlInput);

您需要创建新的 class 命名帐户

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>