C# xml格式字符串 反序列化和序列化

最近在做C# 一个项目,涉及到序列化知识点,但对于复杂的xml格式不知道如何编写实体类,网上也没找到相同类型格式的xml介绍的博客资料,所以研究了两天,终于做出来了,先把XML格式的字符串贴上来。

<REQUEST_COMMON_FPKJ class="REQUEST_COMMON_FPKJ"> 
        <COMMON_FPKJ_FPT class="COMMON_FPKJ_FPT"> 
            <FPQQLSH>CW201906271117030642</FPQQLSH> 
            <DDH></DDH> 
            <KPLX>0</KPLX>
            <BMB_BBH>30.0</BMB_BBH> 
            <XSF_NSRSBH>15000119230104170217</XSF_NSRSBH> 
            <XSF_MC>15000119230104170217</XSF_MC> 
            <XSF_DZDH>中国杭州西湖区龙井路002号</XSF_DZDH> 
            <XSF_YHZH></XSF_YHZH> 
            <GMF_NSRSBH></GMF_NSRSBH> 
            <GMF_MC>Gwyy001</GMF_MC> 
            <GMF_DZDH></GMF_DZDH> 
            <GMF_YHZH></GMF_YHZH>
        <GMF_SJ></GMF_SJ>
        <GMF_EMAIL></GMF_EMAIL> 
            <KPR>Kwyy001</KPR> 
            <SKR></SKR> 
            <FHR></FHR> 
            <YFP_DM></YFP_DM> 
            <YFP_HM></YFP_HM> 
            <JSHJ>99.9</JSHJ> 
            <HJJE>90</HJJE> 
            <HJSE>9.9</HJSE> 
            <BZ></BZ> 
           <ZXBMmm></ZXBMmm>
        </COMMON_FPKJ_FPT> 
        <COMMON_FPKJ_XMXXS class="COMMON_FPKJ_XMXX" size="2"> 
            <COMMON_FPKJ_XMXX> 
                <FPHXZ>2</FPHXZ> 
                <SPBM>103011102</SPBM>
                <ZXBM></ZXBM>
                <YHZCBS>0</YHZCBS>
                <LSLBS></LSLBS>
                <ZZSTSGL></ZZSTSGL>
                <XMMC>水果</XMMC> 
                <GGXH></GGXH> 
                <DW>kk</DW> 
                <XMSL>1</XMSL> 
                <XMDJ>100</XMDJ> 
                <XMJE>100</XMJE> 
                <SL>0.11</SL> 
                <SE>11</SE> 
            </COMMON_FPKJ_XMXX>
             <COMMON_FPKJ_XMXX> 
                <FPHXZ>1</FPHXZ> 
                <SPBM>103011102</SPBM>
        <ZXBM></ZXBM>
                <YHZCBS>0</YHZCBS>
                <LSLBS></LSLBS>
                <ZZSTSGL></ZZSTSGL>
                <XMMC>水果</XMMC> 
                <GGXH></GGXH> 
                <DW></DW> 
                <XMSL></XMSL> 
                <XMDJ></XMDJ> 
                <XMJE>-10</XMJE> 
                <SL>0.11</SL> 
                <SE>-1.1</SE> 
            </COMMON_FPKJ_XMXX>
        </COMMON_FPKJ_XMXXS> 
     </REQUEST_COMMON_FPKJ>

 

实体类代码:

namespace CW.HF.HIS.Test
{
    [XmlRoot("REQUEST_COMMON_FPKJ")]
    public class REQUEST_COMMON
    {
        [XmlAttribute("class")]
        public string _class
        { get; set; } = "REQUEST_COMMON_FPKJ";

        private COMMON_FPKJ_FPT commonFpkjFpt = null;
        //属性的定义
        [XmlElement("COMMON_FPKJ_FPT")]
        public COMMON_FPKJ_FPT COMMON_FPKJ_FPT
        {
            get
            {
                if (commonFpkjFpt == null)
                {
                    commonFpkjFpt = new COMMON_FPKJ_FPT();
                }
                return commonFpkjFpt;
            }
            set { commonFpkjFpt = value; }
        }

        private COMMON_FPKJ_XMXXS commonFpkjXmxxs = null;
        [XmlElement("COMMON_FPKJ_XMXXS")]
        public COMMON_FPKJ_XMXXS COMMON_FPKJ_XMXXS
        {
            get
            {
                if (commonFpkjXmxxs == null)
                {
                    commonFpkjXmxxs = new COMMON_FPKJ_XMXXS();
                }
                return commonFpkjXmxxs;
            }
            set { commonFpkjXmxxs = value; }
        }
    }

    public class COMMON_FPKJ_FPT
    {
        [XmlAttribute("class")]
        public string _class
        { get; set; } = "COMMON_FPKJ_FPT";

        [XmlElement("FPQQLSH")]
        public string FPQQLSH { get; set; } = string.Empty;

        [XmlElement("DDH")]
        public string DDH
        { get; set; } = string.Empty;

        [XmlElement("KPLX")]
        public string KPLX
        { get; set; } = string.Empty;

        [XmlElement("BMB_BBH")]
        public string BMB_BBH { get; set; } = string.Empty;

        [XmlElement("XSF_NSRSBH")]
        public string XSF_NSRSBH
        { get; set; } = string.Empty;

        [XmlElement("XSF_MC")]
        public string XSF_MC
        { get; set; } = string.Empty;

        [XmlElement("XSF_DZDH")]
        public string XSF_DZDH { get; set; } = string.Empty;

        [XmlElement("XSF_YHZH")]
        public string XSF_YHZH
        { get; set; } = string.Empty;

        [XmlElement("GMF_NSRSBH")]
        public string GMF_NSRSBH
        { get; set; } = string.Empty;

        [XmlElement("GMF_MC")]
        public string GMF_MC { get; set; } = string.Empty;

        [XmlElement("GMF_DZDH")]
        public string GMF_DZDH
        { get; set; } = string.Empty;

        [XmlElement("GMF_YHZH")]
        public string GMF_YHZH
        { get; set; } = string.Empty;

        [XmlElement("GMF_SJ")]
        public string GMF_SJ
        { get; set; } = string.Empty;

        [XmlElement("GMF_EMAIL")]
        public string GMF_EMAIL
        { get; set; } = string.Empty;

        [XmlElement("KPR")]
        public string KPR
        { get; set; } = string.Empty;

        [XmlElement("SKR")]
        public string SKR
        { get; set; } = string.Empty;


        [XmlElement("FHR")]
        public string FHR
        { get; set; } = string.Empty;

        [XmlElement("YFP_DM")]
        public string YFP_DM
        { get; set; } = string.Empty;

        [XmlElement("YFP_HM")]
        public string YFP_HM
        { get; set; } = string.Empty;

        [XmlElement("JSHJ")]
        public string JSHJ
        { get; set; } = string.Empty;

        [XmlElement("HJJE")]
        public string HJJE
        { get; set; } = string.Empty;

        [XmlElement("HJSE")]
        public string HJSE
        { get; set; } = string.Empty;

        [XmlElement("BZ")]
        public string BZ
        { get; set; } = string.Empty;
    }

    public class COMMON_FPKJ_XMXXS
    {
        [XmlAttribute("class")]
        public string _class { get; set; } = "COMMON_FPKJ_XMXX";

        [XmlAttribute("size")]
        public string size { get; set; }

        private List<COMMON_FPKJ_XMXX> commonFpkjXmxxs = null;

        [XmlElement("COMMON_FPKJ_XMXX")]
        public List<COMMON_FPKJ_XMXX> FPKJ_XMXXs
        {
            get
            {
                if (commonFpkjXmxxs == null)
                {
                    commonFpkjXmxxs = new List<COMMON_FPKJ_XMXX>();
                }
                return commonFpkjXmxxs;
            }
            set { commonFpkjXmxxs = value; }
        }
    }


    public class COMMON_FPKJ_XMXX
    {
        [XmlElement("FPHXZ")]
        public string FPHXZ { get; set; } = string.Empty;

        [XmlElement("SPBM")]
        public string SPBM { get; set; } = string.Empty;

        [XmlElement("ZXBM")]
        public string ZXBM { get; set; } = string.Empty;

        [XmlElement("YHZCBS")]
        public string YHZCBS { get; set; } = string.Empty;
        [XmlElement("LSLBS")]
        public string LSLBS { get; set; } = string.Empty;

        [XmlElement("ZZSTSGL")]
        public string ZZSTSGL { get; set; } = string.Empty;
        [XmlElement("XMMC")]
        public string XMMC { get; set; } = string.Empty;

        [XmlElement("GGXH")]
        public string GGXH { get; set; } = string.Empty;
        [XmlElement("DW")]
        public string DW { get; set; } = string.Empty;

        [XmlElement("XMSL")]
        public string XMSL { get; set; } = string.Empty;

        [XmlElement("XMDJ")]
        public string XMDJ { get; set; } = string.Empty;

        [XmlElement("XMJE")]
        public string XMJE { get; set; } = string.Empty;

        [XmlElement("SL")]
        public string SL { get; set; } = string.Empty;

        [XmlElement("SE")]
        public string SE { get; set; } = string.Empty;
    }
}

反序列化和序列化代码网上多的时,就不一 一粘贴了

下面是序列化代码,文件头部结果不包含xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

/// <summary>
        /// 序列化
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static string SerializeXml(object data)
        {
            using (StringWriter sw = new StringWriter())
            {
                XmlSerializer xz = new XmlSerializer(data.GetType());
                XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                ns.Add("", "");
                xz.Serialize(sw, data, ns);
                return sw.ToString();
            }
        }

下面是另一种序列化代码,文件头部结果包含xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

public static string Serializer(Type type, object obj)
        {
            MemoryStream Stream = new MemoryStream();
            XmlSerializer xml = new XmlSerializer(type);
            //序列化对象
            xml.Serialize(Stream, obj);
            Stream.Position = 0;
            StreamReader sr = new StreamReader(Stream);
            string str = sr.ReadToEnd();

            sr.Dispose();
            Stream.Dispose();

            return str;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中的XML序列序列是常用的技术,可以将对象转为便于传输的XML格式,并且可以将XML格式的数据还原为对象。其中,XML序列可以使用多种方式实现,比如二进制、字节数组、JSON字符串XML字符串等。在C#中,可以使用XmlSerializer类的Serialize方法将对象序列XML字符串,使用Deserialize方法将XML字符串序列为对象。\[1\] 在进行XML序列时,可以通过设置XmlTextWriter的Formatting属性为Formatting.Indented来实现换行显示,使得生成的XML字符串更加可读。另外,需要注意的是,Dictionary本身不支持序列,所以需要重写为可序列的SerializableDictionary类来实现对字典的序列操作。\[2\] 对于XML序列为对象,可以使用deserialize方法来实现。该方法接受一个XML字符串和一个类型参数,通过使用XmlSerializer类的Deserialize方法将XML字符串序列为指定类型的对象。在序列过程中,需要使用StringReader将XML字符串为可读的流,并使用XmlSerializer类进行序列操作。\[3\] #### 引用[.reference_title] - *1* *2* *3* [C# XML序列序列(XmlSerializer)](https://blog.csdn.net/sD7O95O/article/details/128783513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值