C# .NET XML 序列化為對象,反序列化
阿新 • • 發佈:2019-04-20
amp pan str gre ucc 返回 ack HERE where
<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>
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>
<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 序列化為對象,反序列化