• C#的XML序列化及反序列化


      webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化。

      XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XML,首先要为这两种返回信息新建实体类。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Xml.Serialization;
    
    namespace Test1
    {
        [Serializable]
        public class RequestBase
        {
            [XmlElement(Order = 1)]
            public string Name
            {
                get;
                set;
            }
    
            [XmlElement(Order = 2)]
            public string Age
            {
                get;
                set;
            }
    
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Xml.Serialization;
    
    namespace Test1
    {
        [Serializable]
        public class ResponseBase
        {
            [XmlElement(Order = 1)]
            public string Information
            {
                get;
                set;
            }
        }
    }

      然后编写将XML序列化和反序列化的方法:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Xml.Serialization;
    using System.IO;
    
    namespace Test1
    {
        public class Function
        {
            //反序列化
            public static T Deserialize<T>(string xml)
            {
                XmlSerializer xs = new XmlSerializer(typeof(T));
                StringReader sr = new StringReader(xml);
                T obj = (T)xs.Deserialize(sr);
                sr.Close();
                sr.Dispose();
                return obj;
            }
    
            //序列化
            public static string Serializer<T>(T t)
            {
                XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
                xsn.Add(string.Empty, string.Empty);
                XmlSerializer xs = new XmlSerializer(typeof(T));
                StringWriter sw=new StringWriter();
                xs.Serialize(sw, t, xsn);
                string str = sw.ToString();
                sw.Close();
                sw.Dispose();
                return str;
            }
        }
    }

      然后再具体实现将请求信息通过代码处理变成返回信息的方法:

    public string Test(string xml)
            {
                RequestBase request = Function.Deserialize<RequestBase>(xml);
                ResponseBase response = new ResponseBase();
                response.Information = "姓名:" + request.Name + " 年龄为:" + request.Age;
                return Function.Serializer<ResponseBase>(response);
            }

      示例XML:<?xml version="1.0" encoding="utf-8"?><RequestBase><Name>逗你玩</Name><Age>25</Age></RequestBase>

      返回值为:

    <string xmlns="http://tempuri.org/">
    <?xml version="1.0" encoding="utf-16"?> <ResponseBase> <Information>姓名:逗你玩 年龄为:25</Information> </ResponseBase>
    </string>

      

  • 相关阅读:
    java基础-Runnable与Callable
    java基础-Reference三
    java基础-Reference二
    java基础-Reference一
    jvm-gc
    jvm-简介
    java基础-enum
    采购申请->MRP
    消耗性物料采购注意事项
    供应商建立的相关配置
  • 原文地址:https://www.cnblogs.com/yupeiyuan/p/5156023.html
Copyright © 2020-2023  润新知