首页 > Windows开发 > 详细

C# .NET XML 序列化为对象,反序列化

时间:2019-04-20 12:27:35      阅读:209      评论:0      收藏:0      [点我收藏+]

 

XML SAMPLE:

 

<xml>


<bank_type><![CDATA[CFT]]></bank_type>
<cash_fee><![CDATA[1]]></cash_fee>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[Y]]></is_subscribe>

<nonce_str><![CDATA[74971f5846d34fe0a35b8f636413f0e4]]></nonce_str>


<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[C46252FFBA5F10F39F7A040F3BC5D58D]]></sign>

<sub_is_subscribe><![CDATA[N]]></sub_is_subscribe>

<time_end><![CDATA[20190417113750]]></time_end>
<total_fee>1</total_fee>
<trade_type><![CDATA[JSAPI]]></trade_type>

</xml>

 

 

--

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Serialization;
using System.Xml;

namespace SixunWxPayApi
{
    public class XmlSerializerUtil
    {
         

        public static T Deserialize<T>( string xml)
        {
            Type type=typeof(T);
            try
            {

                using (StringReader sr = new StringReader(xml))
                {
                    XmlSerializer xmldes = new XmlSerializer(type);
                    return (T)xmldes.Deserialize(sr);
                }
            }
            catch (Exception e)
            {
               // System.Diagnostics.Debug.WriteLine("ERROR " + e.StackTrace);
                return default(T);
            }
        }

        //where T : class
        public static string XmlSerializer<T>(T serialObject)  
        {
            XmlSerializer ser = new XmlSerializer(typeof(T));
            System.IO.MemoryStream mem = new MemoryStream();
            XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8);

            // 强制指定命名空间,覆盖默认的命名空间  
            XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
            namespaces.Add(string.Empty, string.Empty);

            ser.Serialize(writer, serialObject, namespaces);
            writer.Close();

            return Encoding.UTF8.GetString(mem.ToArray());
        }

    }
}

 

 

--

 

实体类要加声明:

[XmlRootAttribute("xml", Namespace = "", IsNullable = false)]

 

调用:  

WxResultBaseModel wrbm = XmlSerializerUtil.Deserialize<WxResultBaseModel>(strreturn);

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Serialization;

namespace SixunWxPayApi
{
    /// <summary>
    /// 微信返回数据基础model,XML根元素是"xml"
    /// </summary>
   [XmlRootAttribute("xml", Namespace = "", IsNullable = false)]
    public class WxResultBaseModel
    {
        public string result_code { get; set; }
        public string return_code { get; set; }

        public string sign { get; set; }


        public string mch_id { get; set; }

        public string sub_mch_id { get; set; }

        public string out_trade_no { get; set; }

        public string transaction_id { get; set; }

        public string trade_state { get; set; }

        public string total_fee { get; set; }
       

    }
}

 

 

--

 

C# .NET XML 序列化为对象,反序列化

原文:https://www.cnblogs.com/runliuv/p/10740093.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!