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;

扫描二维码关注公众号,回复: 6788933 查看本文章

        [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;
        }

猜你喜欢

转载自blog.csdn.net/feitiankoulan/article/details/95306058