zoukankan      html  css  js  c++  java
  • C#实体类生成XML(注意<![CDATA]>标签的不解析)

    最近跟人对接,使用的是WebService,之前对接用WebService也就是直接传参数就行,像调方法那样简单,这次。。。要我按XML传,为了搞他那个格式,花了我点时间。。。特此记录。

    直接贴代码和生成的XML了要注意的是这里的

    <BusinessRequest>标签,这个
    <![CDATA]>;里的内容他是不解析的,所以在xml生成实体类的时候要写如下代码:
         [XmlElement("BusinessRequest")]
            public XmlNode[] Nodes
            {
                get
                {
                    var dom = new XmlDocument();
                    return new XmlNode[] { dom.CreateCDataSection(Content.Text) };
                }
                set
                {
                    if (value == null)
                    {
                        Content = new BusinessRequest();
                        return;
                    }
                }
            }
    <ESBEnvelope xmlns="http://ESB.TopSchemaV2">
    <ESBHeader><HeaderControl AppCode="123" Password="123" MessageCategory="123" Version="1" CreateTime="2021/6/3 11:03:12" /></ESBHeader>
      <ESBBody>
          <BodyControl CallType=""/>
        <BusinessRequest><![CDATA[<QueryParameter><DeptCode>03060101</DeptCode></QueryParameter>]]></BusinessRequest>
      </ESBBody> </ESBEnvelope>

     实体类代码:

        [XmlRoot("ESBEnvelope", Namespace = "http://ESB.TopSchemaV2")]
        public class ESBEnvelope {
    
            [XmlElement]
            public ESBHeader ESBHeader { get; set; } = new ESBHeader();
    
            [XmlElement]
            public ESBBody ESBBody { get; set; } = new ESBBody();
        }
    
       
        public class ESBHeader {
           
            [XmlElement]
            public HeaderControl HeaderControl { get; set; } = new HeaderControl();
        }
    
        public class HeaderControl {
            [XmlAttribute(AttributeName = "AppCode")]
            public string AppCode { get; set; } = "123";
    
            [XmlAttribute(AttributeName = "Password")]
            public string Password { get; set; } = "123";
    
            [XmlAttribute(AttributeName = "MessageCategory")]
            public string MessageCategory { get; set; } = "123";
    
            [XmlAttribute(AttributeName = "Version")]
            public string Version { get; set; } = "1";
    
            [XmlAttribute(AttributeName = "CreateTime")]
            public string CreateTime { get; set; } = DateTime.Now.ToString();
    
            [XmlAttribute(AttributeName = "MyProperty")]
            public string MyProperty { get; set; }
        }
        public class ESBBody
        {
            [XmlElement]
            public BodyControl BodyControl { get; set; } = new BodyControl();
    
            [XmlIgnore]
            public BusinessRequest Content { get; set; } = new BusinessRequest();
    
            [XmlElement("BusinessRequest")]
            public XmlNode[] Nodes
            {
                get
                {
                    var dom = new XmlDocument();
                    return new XmlNode[] { dom.CreateCDataSection(Content.Text) };
                }
                set
                {
                    if (value == null)
                    {
                        Content = new BusinessRequest();
                        return;
                    }
                }
            }
        }
        public class BodyControl
        {
            [XmlAttribute(AttributeName = "CallType")]
            public string CallType { get; set; } = "";
        }
    
        public class BusinessRequest
        {
            [XmlIgnore]
            public string Text { get; set; } = "<QueryParameter><DeptCode>03060101</DeptCode></QueryParameter>";
    
    
        }
    
        public class QueryPTSDrugCustodyInventoryService
        {
            [XmlElement]
            public List<Demography> Demography { get; set; }
        }
    
    
        public class Demography
        {
            /// <summary>
            /// 患者ID
            /// </summary>
            public string PatientID { get; set; }
            /// <summary>
            /// 病历号
            /// </summary>
            public string MedicalRecordNo { get; set; }
            /// <summary>
            /// 身份证号
            /// </summary>
            public string SSN { get; set; }
            /// <summary>
            /// 患者姓名
            /// </summary>
            public string PatientName { get; set; }
            /// <summary>
            /// 性别
            /// </summary>
            public string Sex { get; set; }
            /// <summary>
            /// 出生日期
            /// </summary>
            public string Birthday { get; set; }
            /// <summary>
            /// 婚姻状况
            /// </summary>
            public string MaritalStatus { get; set; }
            /// <summary>
            /// 联系电话
            /// </summary>
            public string LinkTel { get; set; }
    
    
            /// <summary>
            /// 药品信息
            /// </summary>
            [XmlElement]
            public List<DrugInfo> DrugInfo { get; set; }
    
    
        }
        public class DrugInfo
        {
            public string DrugCode { get; set; }
            /// <summary>
            /// 药品名称
            /// </summary>
            public string DrugName { get; set; }
            /// <summary>
            /// 规格
            /// </summary>
            public string Specifications { get; set; }
            /// <summary>
            /// 生产厂商
            /// </summary>
            public string Manufacturer { get; set; }
            /// <summary>
            /// 用药总数量
            /// </summary>
            public string TotalDosage { get; set; }
            /// <summary>
            /// 总数单位
            /// </summary>
            public string TotalUnit { get; set; }
            /// <summary>
            /// 剩余数量
            /// </summary>
            public string TotalSurplus { get; set; }
            /// <summary>
            /// 剩余单位
            /// </summary>
            public string SurplusUnit { get; set; }
        }
  • 相关阅读:
    Sql Server--如何自动备份数据
    Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Chinese_PRC_CI_AI" in the equal to operation.
    GET方法和POST方法的区别,Get方法到底可传递的字符串的最大长度是多少?
    Specialization For SCCM
    Fullscreen API:全屏操作
    How to enable remote connections to SQL Server
    Advanced Installer
    ajax跨域请求webservice webconfig配置
    SharePoint Resize app
    Sharepoint 开启App 配置App
  • 原文地址:https://www.cnblogs.com/jyj666/p/14880362.html
Copyright © 2011-2022 走看看