C# XML反序列化解析成对象集合

时间:2021-09-07
本文章向大家介绍C# XML反序列化解析成对象集合,主要包括C# XML反序列化解析成对象集合使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.需要解析的XML字符串

string xmlStr = @"<Request>
                     <BookedInfos>
                         <BookedInfo>
                            <CHARGECODE> 收费项编码 </CHARGECODE>
                             <HISDEPTCODE> His科室代码 </HISDEPTCODE>
                              <INQTY> 出库数量 </INQTY>
                              </BookedInfo>
                         <BookedInfo>
                               <CHARGECODE> 收费项编码 </CHARGECODE>
                               <HISDEPTCODE> His科室代码 </HISDEPTCODE>
                               <INQTY> 出库数量 </INQTY>
                         </BookedInfo>
                     </BookedInfos>
                   </Request>";

2.需要解析成的目标实体类

    public class BookedInfo
    {
        public string CHARGECODE { get; set; }
        public string HISDEPTCODE { get; set; }
        public string INQTY { get; set; }
    }

3.解析的帮助方法

 public static List<T> XmlUrlConvertModel<T>(string xmlStr, string nodename) where T : class, new()
        {
            List<T> ts = new List<T>();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xmlStr);
            XmlNodeList xmlNodeList = xmlDoc.SelectNodes(nodename);
            foreach (XmlNode xnls in xmlNodeList)
            {
                T t = new T();
                if (xnls.Name.ToUpper() == typeof(T).Name.ToUpper())
                {
                    foreach (XmlNode xnl in xnls.ChildNodes)
                    {
                        System.Reflection.PropertyInfo[] propertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
                        foreach (System.Reflection.PropertyInfo pinfo in propertyInfo)
                        {
                            if (xnl.Name.ToUpper() == pinfo.Name.ToUpper())
                            {
                                pinfo.SetValue(t, xnl.InnerText, null);
                                break;
                            }
                        }
                    }
                }
                ts.Add(t);
            }
            return ts;
        }

4.调用帮助方法

var ls = XmlUrlConvertModel<BookedInfo>(xmlStr, "Request/BookedInfos/BookedInfo");

5.结果

原文地址:https://www.cnblogs.com/HansZimmer/p/15238026.html