c# xml序列化和反序列化。也就是xml的解析和反解析。

用习惯了newTownSoft.json 的json反序列化。碰到xml是真的不习惯。

每次json反序列化都是直接把json丢到bejson网站生成一个实体类,稍微修改修改一点点变量名。然后直接newTownSoft反序列化,一下就得到一个实体类了。今天调某个接口,碰到xml。

记录如下。

xml

<response>
<functionID>setItemsPics</functionID>
<time>2017-09-07 15:51:04</time>
<ItemsIDList>
  <itemIDInfo>
    <operCode>0</operCode>
    <operation>操作成功</operation>
  </itemIDInfo>
<itemIDInfo>
  <itemID>1125507057</itemID>
    <operCode>0</operCode>
    <operation>操作成功</operation>
  </itemIDInfo>
</ItemsIDList>
</response>

实体类如下:先引用 using System.Xml.Serialization;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace DDTopManager.Response
{
    [XmlRoot("response")]
    public class RSPItemPicSet
    {

        //操作返回xml示例,按这个xml格式定义可序列化的实体类
        //        public string str = @"<response>
        //    <functionID>setItemsPics</functionID>
        //    <time>2017-09-07 15:51:04</time>
        //    <ItemsIDList>
        //        <itemIDInfo>
        //            <itemID>1125550957</itemID>
        //            <operCode>0</operCode>
        //            <operation>操作成功</operation>
        //        </itemIDInfo>
        //        <itemIDInfo>
        //            <itemID>1125507057</itemID>
        //            <operCode>0</operCode>
        //            <operation>操作成功</operation>
        //        </itemIDInfo>
        //    </ItemsIDList>
        //</response>";
        [XmlElement("functionID")]
        public string functionID { get; set; }
        [XmlElement("time")]
        public string time { get; set; }

        [XmlArray("ItemsIDList"), XmlArrayItem("itemIDInfo")]
        public List<itemIDInfo> ItemsIDList { get; set; }
        [XmlRoot("itemIDInfo")]
        public class itemIDInfo
        {
            [XmlElement("itemID")]
            public string itemID { get; set; }
            [XmlElement("operCode")]
            public string operCode { get; set; }
            [XmlElement("operation")]
            public string operation { get; set; }
        }
    }

}

  引用(这是从str这个xml中反序列化到实体类)大致如下:

XmlSerializer se = new XmlSerializer(typeof(RSPOrdersListGet));

byte[] arry = Encoding.UTF8.GetBytes(str);
System.IO.Stream me = new System.IO.MemoryStream(arry);
RSPOrdersListGet rsp = (RSPOrdersListGet)se.Deserialize(me);

  序列化如下:

 RSPOrdersListGet RSPLG = new RSPOrdersListGet();
            RSPLG.functionID = "setItemsPics";

            List<itemIDInfo> itemidinfos = new List<itemIDInfo>();
            itemIDInfo idi = new itemIDInfo();
            idi.operation = "000";
            idi.operCode = "0011";
            idi.itemId = "aaa";
            itemidinfos.Add(idi);
            itemIDInfo idi1 = new itemIDInfo();
            idi1.operation = "000";
            idi1.operCode = "0011";
            idi1.itemId = "bbb";
            itemidinfos.Add(idi1);
            RSPLG.ItemsIDList = itemidinfos;
            XmlSerializer rSPOrdersListGet = new XmlSerializer(typeof(RSPOrdersListGet));
            rSPOrdersListGet.Serialize(Console.Out, RSPLG);

  

记录,以免忘记。

有一点和newTownSoft.json序列化和反序列化不同的是,比如数字List<Entity> MyData 这个MyData 和json要对的上,

这里的直接用 头部的约束来定义即可

时间: 2024-10-11 00:33:13

c# xml序列化和反序列化。也就是xml的解析和反解析。的相关文章

XML 序列化与反序列化

XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param name="type">对象类型</param> /// <param name="obj">对象</param> /// <param name="fileName">序列化的XML文件路径<

Note4:XML序列化和反序列化

XML序列化和反序列化 待总结!

c# XML序列化与反序列化 属性字段标识

序列化对象 public class People { [XmlAttribute("NAME")] public string Name { set; get; } [XmlAttribute("AGE")] public int Age { set; get; } } [XmlRoot("Root")] public class Student : People { [XmlElement("CLASS")] public

.NET XML序列化与反序列化

闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="className"></param> /// <returns></returns> public stat

C#操作XML序列化与反序列化

1 public class XmlSerializerHelper 2 { 3 /// <summary> 4 /// 从XML文件中反序列化读取对象 5 /// </summary> 6 /// <typeparam name="T"></typeparam> 7 /// <param name="filePath"></param> 8 /// <param name="r

XML 序列化 二进制 反序列化 回来

InitializeComponent(); List<WswModel> ListModel = new List<WswModel>(); string FilePath = @"../../XML/UserAddDelectUpdate.xml"; string FilePathBin = @"wsw.wsw"; XmlDocument XmlDoc = new XmlDocument(); BinaryFormatter binary

Xml 序列化 Json 反序列化

#region 全局变量 /// <summary> /// 全局变量 /// </summary> XmlDocument XmlDoc = new XmlDocument(); #endregion #region 加载 public ParseJosn() { InitializeComponent(); ParseJson(XmlPaerseJson()); } #endregion #region Json 转换Model /// <summary> ///

XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对象如果需要传递给其他系统使用:或者在关机时需要保存下来以便下次再次启动程序使用就需要序列化和反序列化. 范围:本文只介绍xml序列化,其实序列化可以是二进制的序列化,也可以是其他格式的序列化. 看一段最简单的Xml序列化代码 1 2 3 4 5 6 7 8 9 10 11 12 class Prog

Xml序列化、反序列化帮助类

之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 1 /// <summary> 2 /// 功能:Xml序列化.反序列化帮助类 3 /// 说明: 4 /// 创建人: 5 /// 创建时间:2014年3月13日 6 /// </summary> 7 public static class XmlHelper 8 { 9 /// <summary> 10 ///

C# XmlSerializer 对象的Xml序列化和反序列化

.Net程序执行时,对象都驻留在内存中:内存中的对象如果需要传递给其他系统使用:或者在关机时需要保存下来以便下次再次启动程序使用就需要序列化和反序列化. System.Xml.Serialization命名空间中有一系列的特性类,用来控制复杂类型序列化.例如XmlElementAttribute.XmlAttributeAttribute.XmlArrayAttribute.XmlArrayItemAttribute.XmlRootAttribute等等. 可以使用XmlElement指定属性序