xml序列化和反序列化(二)

上篇讲到关于xml入参实体序列化,下面给出出参实体反序列化,代码如下:

    /// <summary>
    /// 反序列化
    /// </summary>
    /// <param name="strXML">XML字符串</param>
    /// <returns></returns>
    public static T DESerializer<T>(string strXML) where T : class
    {
        try
        {
            using (StringReader sr = new StringReader(strXML))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(T));
                return serializer.Deserialize(sr) as T;
            }
        }
        catch (Exception ex)
        {
            return null;
        }
    }

这方法,网上一般都能找到,针对复杂的xml,可以定义不同的实体对应进行解析,这里就不多说了,我要重点说的是怎么完美解析任意xml文档,先看一下示例代码:

//xml转实体
            string xml = "<?xml version=\"1.0\" encoding=\"utf - 8\" ?>"+
                        @"<PacsResult>
                           <successe>true</successe> 
                           <msg>成功</msg>
                           <reports> 
                             <report>
                               <PatientsName>Cui Jian Hong</PatientsName>
                               <PatientsID>P57748</PatientsID>
                             </report>
                          </reports>
                         </PacsResult>";
          //  var data = XElement.Parse(xml).Descendants("report");
            var data = XElement.Parse(xml).Descendants("reports").Elements("report");
            List<rep> repList = new List<rep>();
            foreach (var item in data)
            {
                repList.Add(new rep()
                {
                    PatientsName = item.Element("PatientsName").Value,
                    PatientsID = item.Element("PatientsID").Value,
                });
            }
Descendants和Elements就可以对xml进行完美解析。
Descendants:按文档顺序返回经过筛选的此文档或元素的子代元素的集合;

Elements:源集合中返回经过筛选的子集合元素的每个元素和 文档;
有什么区别呢,请参考博友的文章,通过两篇文章介绍,相信大家对入参xml封装和出参xml解析有了完美的解决方案。欢迎批评指正!
全文完!

posted @ 2018-05-12 10:34  yaphetsfang  阅读(209)  评论(0编辑  收藏  举报