C#序列化xml,開發常用

來源:互聯網
上載者:User

標籤:相對   結合   .project   開發   開發人員   collect   idc   mod   eve   

序列化操作對於開發人員來說最熟悉不過了。

序列化分為:序列化和還原序列化。

序列化名詞解釋:序列化是將對象狀態轉換為可保持或傳輸的格式的過程。

與序列化相對的是還原序列化,它將流轉換為對象。這兩個過程結合起來,可以輕鬆地儲存和傳輸資料。這就是序列化的意義所在。

我們可以把對象序列化為不同的格式,比如說,Json序列化、XML序列化、二進位序列化、SOAP序列化等,以上這些不同的格式也都是為了適應具體的業務需求。

 

最近開發工作中需要一個xml序列化操作,

大概需求就是,有一個系統B提供了一個對外資料提供者,B系統只接收xml的格式資料。

在這裡有兩種寫法:

    1.拼湊成一個對應格式xml資料格式傳給B系統,那麼這樣就有一個問題,在拼湊過程會遇到到逸出字元,那麼要去解決逸出字元帶來的問題,效率上也不高,代碼看起來也很low.

    2.實現序列化操作,這樣做效率是最高的,代碼美觀,很有階層,維護也方便。

 

接下來就是對於xml序列化的操作,很方便,適合開發中使用,我已經做成工具類,方便調用與移植。

   1.建立一個工具檔案夾Utils,建立一個類檔案XmlUtils.cs

      類具體代碼:

   

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml;using System.Xml.Serialization;namespace Myxs.Application.port.Utils{    public static class XmlUtils    {        public static string Serialize<T>(this T obj, bool omitXmlDeclaration = false)        {            var sb = new StringBuilder();            using (var xw = XmlWriter.Create(sb, new XmlWriterSettings()            {                OmitXmlDeclaration = omitXmlDeclaration,                ConformanceLevel = ConformanceLevel.Auto,                Indent = true            }))            {                var xs = new XmlSerializer(obj.GetType());                xs.Serialize(xw, obj);            }            return sb.ToString();        }    }}

  接下來就是建立XmlModels檔案夾,建立createInfoXml.cs的類,這裡是設定需要序列化的xml元素

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml.Serialization;namespace Myxs.Application.port.XmlModels{    [XmlRoot(ElementName = "apas_info")]    public class createInfoXml    {        [XmlElement(ElementName = "serviceid")]        public string Serviceid { get; set; }        [XmlElement(ElementName = "projectname")]        public string Projectname { get; set; }        [XmlElement(ElementName = "applyname")]        public string Applyname { get; set; }        [XmlElement(ElementName = "mobile")]        public string Mobile { get; set; }        [XmlElement(ElementName = "phone")]        public string Phone { get; set; }        [XmlElement(ElementName = "address")]        public string Address { get; set; }        [XmlElement(ElementName = "postcode")]        public string Postcode { get; set; }        [XmlElement(ElementName = "email")]        public string Email { get; set; }        [XmlElement(ElementName = "contactman")]        public string Contactman { get; set; }        [XmlElement(ElementName = "legalman")]        public string Legalman { get; set; }        [XmlElement(ElementName = "idcard")]        public string Idcard { get; set; }        [XmlElement(ElementName = "create_time")]        public string Create_time { get; set; }        [XmlElement(ElementName = "receive_time")]        public string Receive_time { get; set; }    }}

  現在萬事俱備只欠東風了。接下來就是使用工具類了,對xml進行序列化操作。

   

var model1 = new createInfoXml                    {                        Serviceid = entity.serviceid,                        Projectname = entity.projectname,                        Applyname = entity.applyname,                        Mobile = entity.mobile,                        Phone = entity.phone,                        Address = entity.address,                        Postcode = entity.postcode,                        Email = entity.email,                        Contactman = entity.contactman,                        Legalman = entity.legalman,                        Idcard = entity.idcard,                        Create_time = entity.create_time,                        Receive_time = entity.receive_time,                    };

  後面是我建立的一個實體類,這個實體類可以自己建立,我就不在這裡建立了。

        調用工具類中的序列化方法

var dataxml = XmlUtils.Serialize(model1, true);

  第二參數為true的原因就是我只需要xml的資料,不行了xml的標頭檔,為true是為了去除xml標頭檔。

最終如下:

<apas_info>
<serviceid>xx</serviceid>

<projectname>xx</projectname>

<applyname>xxx</applyname>
<mobile>xx</mobile>
.................
</apas_info>

  這就完成序列化操作了。

   

 

C#序列化xml,開發常用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.