c# XML 實例類轉換返回XML

 

[XmlRoot(ElementName = "Response")]
    public class BackBankInfo
    {
        public ResponseData Data { get; set; }
        public override string ToString()
        {
            return CommonUtil.GetXml(this, Encoding.UTF8); 
        }
    }
    [XmlType(TypeName = "Data")]
    public class ResponseData
    {
        [XmlElement("errcode")]
        public string ErrCode { get; set; }
        [XmlElement("errmsg")]
        public string ErrMssage { get; set; }
    }

 

 public static string GetXml(object model, Encoding en) 
        {
            try
            {
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Indent = true;
                settings.IndentChars = " ";
                settings.Encoding = en;
                settings.NewLineChars = "\r\n";// 換行
                settings.OmitXmlDeclaration = false;// 不生成聲明頭 <?xml version="1.0" encoding="utf-16"?>
                XmlSerializerNamespaces _namespaces = new XmlSerializerNamespaces(
                        new XmlQualifiedName[] {
                        new XmlQualifiedName(string.Empty, "")
                     });
                //使用StringWriter無法修改編碼方式,默認utf-16
                //StringWriter xmlTest = new StringWriter();
                //XmlWriter sw = XmlWriter.Create(xmlTest,settings);//
                //var 下詳細 = xmlTest.ToString();
                MemoryStream stream = new MemoryStream();
                XmlWriter sw = XmlWriter.Create(stream, settings);//
                XmlSerializer serializer = new XmlSerializer(model.GetType());
                serializer.Serialize(sw, model, _namespaces);//
                sw.Close();
                return en.GetString(stream.ToArray());
            }
            catch (Exception ex)
            {
                LoggerHelp.Info($"xml生成異常{ex}");
            }
            return "";
        }

 

解析XML

 RequestInfo mobileInfo = new RequestInfo();
            using (StringReader sr = new StringReader(xmlRequestInfo))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(RequestInfo));
                mobileInfo = serializer.Deserialize(sr) as RequestInfo;
            }

 

[XmlRoot(ElementName = "Request")]
    public class RequestInfo
    {
        [XmlElement(ElementName = "Data")]
        public RequestData RequestData { get; set; }
    }

    [XmlRoot(ElementName = "Envelope")]
    public class RequestData
    {
        [XmlElement(ElementName = "merchid")]
        public string Merchid { get; set; }
        [XmlElement(ElementName = "trnserial")]
        public string Trnserial { get; set; }
    }

using System.Xml.Serialization;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章