xml序列化和反序列化
Posted 国防部长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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解析有了完美的解决方案。欢迎批评指正!
全文完!
以上是关于xml序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章