posts - 52,comments - 30,views - 13万

xml转实体

复制代码
 /// <summary>
        /// 把xml转换成实体
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="model"></param>
        /// <param name="xmlString"></param>
        /// <returns></returns>
        public static List<T> GetXmlModel<T>(T model, string xmlString) where T : class
        {
            List<T> list = new List<T>();
            try
            {
                XmlDocument xml = new XmlDocument();
                xml.LoadXml(xmlString);//把xml格式的字符串转为XMLDataDocument对象              
                XmlNodeList data = xml.DocumentElement.ChildNodes;//得到的是xml对象的节点数组
                foreach (XmlNode item in data)
                {
                    Dictionary<string, string> xmlDic = new Dictionary<string, string>();
                    if (item.ChildNodes.Count > 0)
                    {
                        foreach (XmlNode it in item.ChildNodes)
                        {
                            xmlDic.Add(it.LocalName, it.InnerText);
                        }
                    }
                    var m = model.GetType();
                    foreach (PropertyInfo p in m.GetProperties())
                    {
                        string name = p.Name;
                        if (xmlDic.Keys.Contains(name))
                        {
                            string value = xmlDic.Where(x => x.Key == name).FirstOrDefault().Value;
                            p.SetValue(model,
                            string.IsNullOrEmpty(value) ? null : Convert.ChangeType(value, p.PropertyType), null);
                        }
                    }
                    list.Add(model);
                }
                return list;
            }
            catch (Exception ex)
            {
                return list;
            }
        }
复制代码

实体转xml

复制代码
/// <summary>
        /// 地图文件 - 实体转xml
        /// </summary>
        /// <param name="patrolEquipmentDto"></param>
        /// <param name="path"></param>
        private static void MapFileToXmlMethod(List<LinkageConfigFileDto> patrolEquipmentDto, string path)
        {
            XmlDocument xmlDoc = new XmlDocument();
            //加入XML的声明段落,Save方法不再xml上写出独立属性
            xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
            //加入根元素

            XmlElement root = xmlDoc.CreateElement("Effect_Config");
            xmlDoc.AppendChild(root);

            foreach (var item in patrolEquipmentDto)
            {
                XmlElement memberlist = xmlDoc.CreateElement("Item");
                XmlElement source_code = xmlDoc.CreateElement("source_code");
                source_code.InnerText = item?.source_code;

                XmlElement source_name = xmlDoc.CreateElement("source_name");
                source_name.InnerText = item?.source_name;

                XmlElement source_type = xmlDoc.CreateElement("source_type");
                source_type.InnerText = item?.source_type;

                XmlElement device_id = xmlDoc.CreateElement("device_id");
                device_id.InnerText = item?.device_id;

                memberlist.AppendChild(source_code);
                memberlist.AppendChild(source_name);
                memberlist.AppendChild(source_type);
                memberlist.AppendChild(device_id);
                root.AppendChild(memberlist);
            }
            xmlDoc.Save(path);
        }
复制代码

 

posted on   白码一号  阅读(692)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示