C#將XML字符串轉換成實體對象,並去除cdata


<xml><ToUserName><![CDATA[gh_8b13cf658f77]]></ToUserName>
<FromUserName><![CDATA[oBvnj5v9LlSagr_XjCLChg7acR30]]></FromUserName>
<CreateTime>1639555238</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[]]></EventKey></xml>
 
如上xml字符串是關注微信公眾時,微信返回的數據
public static T GetXmlModel<T>(T model, string xmlString) where T : class
{
            try 
            {
                XmlDocument xml = new XmlDocument();
                xml.LoadXml(xmlString);//把xml格式的字符串轉為XMLDataDocument對象
                Dictionary<string, string> xmlDic = new Dictionary<string, string>();
                XmlNodeList data = xml.DocumentElement.ChildNodes;//得到的是xml對象的節點數組
                for (int i = 0; i < data.Count; i++)
                {
                    xmlDic.Add(data.Item(i).LocalName, data.Item(i).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);
                    }
                }
                return model;
            }
            catch (Exception ex)
            {
                return model;
            } 
}

調用方法

var param = new XMLModel();
string bodyStr=@"<xml><ToUserName><![CDATA[gh_8b13cf658f77]]></ToUserName>
<FromUserName><![CDATA[oBvnj5v9LlSagr_XjCLChg7acR30]]></FromUserName>
<CreateTime>1639555238</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[]]></EventKey>";
var obj=GetModel<XMLModel>(param, bodyStr);

實體類

public class XMLModel
    {
        /// <summary>
        /// 
        /// </summary>
        public string FromUserName { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string CreateTime { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string MsgType { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string Event { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string EventKey { get; set; }

    }

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM