zoukankan      html  css  js  c++  java
  • 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)
                {
                    PropertyInfo[] propertyInfo = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
                    foreach (PropertyInfo pinfo in propertyInfo)
                    {
                        if (xnl.Name.ToUpper() == pinfo.Name.ToUpper())
                        {
                            pinfo.SetValue(t, xnl.InnerText, null);
                            break;
                        }
                    }
                }
            }
            ts.Add(t);
        }
        return ts;
    }

    4.调用帮助方法

    object obj = new object(); 
    List<BookedInfo> ls = new List<BookedInfo>();
     try
     {
         ls = ObjHelper.XmlUrlConvertModel<BookedInfo>(xml, "Request/BookedInfos/BookedInfo");
     }
     catch (Exception)
     {
         obj = new { code = -1, message = "未能识别xml,请校验!" };
         return JsonConvert.SerializeObject(obj);
     }

    5.结果

    PS:类名和父标签相同

  • 相关阅读:
    Mycat的server.xml配置
    Docker构建Mycat(单节点)
    Mycat相关概念解读
    Mycat简介及适用场景
    SpringBoot整合WebService
    SpringBoot事务简单操作及手动回滚
    对事务及其注解@Transactional的解读
    git将某分支的某次提交合并到另一分支
    SpringBoot快速支持国际化i18n
    SpringBoot多数据源自动切换
  • 原文地址:https://www.cnblogs.com/HansZimmer/p/15238026.html
Copyright © 2011-2022 走看看