C#根据类的public属性加载类中对应字段的XML

<?xml version="1.0" encoding="utf-8"?>
<root>
  	<UserLogin ID="0" UserName="" UserPassWord="" Level="1" PowerName="默认用户" PowerID="0" Remark="" IsEnabled="True"/>
    <UserLogin ID="1" UserName="" UserPassWord="123" Level="2" PowerName="管理员" PowerID="0" Remark="" IsEnabled="True"/>
    <UserLogin ID="2" UserName="Administrator" UserPassWord="123" Level="3" PowerName="超级管理员" PowerID="0" Remark="" IsEnabled="True"/>
  </root>
public partial class UserLogin
{
   
    private int id;
  
    public int ID
    {
        get=>id; set=>id = value;
    }
    private string userName;
  
    public string UserName
    {
        get => userName;
        set => userName=value;
    }
    private string userPassWord;

   
    public string UserPassWord
    {
        get => userPassWord;
        set =>userPassWord=value ;
    }
    private int _level;

   
    public int Level
    {
        get => _level;
        set => _level=value;
    }
    private string powerName;
    public string PowerName
    {
        get => powerName;
        set => powerName=value;
    }
    private int powerID;
    public int PowerID
    {
        get => powerID;
        set => powerID=value;
    }
   
    private string remark;

    
    public string Remark
    {
        get => remark;
        set => remark=value;
    }
    private bool isEnabled;

    
    public bool IsEnabled
    {
        get => isEnabled;
        set => isEnabled=value;
    }
}
public List<UserLogin> GetUserInfos()
{
	 xmlPath = Path.Combine("带.xml后缀的xml文件路径");
	 doc = new XmlDocument();
	 doc.Load(xmlPath);
	 root = doc.SelectSingleNode("root");
	  List<UserLogin> result = new List<UserLogin>();//在这个函数中将UserLogin改成T可以用作泛型类的xml统一加载
	 foreach (XmlElement xl in root.ChildNodes)
	 {
	     UserLogin item = new UserLogin();
	     var properties = typeof(UserLogin).GetProperties();
	     foreach (PropertyInfo pi in properties)
	     {
	         var attribute = xl.GetAttribute(pi.Name);
	         if (attribute != null)
	         {
	             var value = Convert.ChangeType(attribute, pi.PropertyType);
	             //给item的属性赋值
	             pi.SetValue(item, value);
	         }
	     }
	     result.Add(item);
	
	 }
	 return result;
}

可用于泛型类的xml数据加载

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值