我正在搞乱一些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;
}
}
答案 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)
我在名为account
或admin
的{{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