• xml序列化成对象处理


            static void ConvertToObj()
            {
                var path = AppDomain.CurrentDomain.BaseDirectory + "/XMLFile1.xml";
    
                if (File.Exists(path))
                {
                    string xmlContent = string.Empty;
                    using (var sr = new StreamReader(path))
                    {
                        var xml = new XmlDocument();
                        xml.Load(sr);
                        xmlContent = xml.OuterXml;
                    }
    
                    //去除xsi标志信息,不去除会引发转换错误
                    xmlContent = xmlContent.Replace("xmlns="urn:hl7-org:v3"", "");
                    xmlContent = xmlContent.Replace("xsi:type=", "type=");
    
                    using (StringReader sr1 = new StringReader(xmlContent))
                    {
                        XmlSerializer xmldes = new XmlSerializer(typeof(BloodTransAppInfoAddObj.BloodTransAppInfoAdd));
                        var obj = (BloodTransAppInfoAddObj.BloodTransAppInfoAdd)xmldes.Deserialize(sr1);
                    }
                }
            }

    转换方法。

    这边是转换hl7v3文档,需要将一些hl7v3信息替换掉,不然转换失败!

     对象信息:

      基础信息:

      1     public partial class XmlObj
      2     {
      3         #region 通用基础类
      4 
      5         public class CodeValueData
      6         {
      7             [XmlElement("code")]
      8             public CodeAttributeData code { get; set; }
      9 
     10             [XmlElement("value")]
     11             public ValueAttributeData value { get; set; }
     12         }
     13 
     14 
     15         public class NameItemPartData
     16         {
     17             [XmlElement("item")]
     18             public PartData item { get; set; }
     19         }
     20 
     21         #region CodeSystemNameData
     22         public class CodeSystemNameDisplayNameData : ClassSystemNameAttributeData
     23         {
     24             [XmlElement("displayName")]
     25             public ValueAttributeData displayName { get; set; }
     26         }
     27 
     28         public class ClassSystemNameAttributeData
     29         {
     30             [XmlAttribute("codeSystemName")]
     31             public string codeSystemName { get; set; }
     32         }
     33         #endregion
     34 
     35         #region TypeCodeAttributeData
     36         public class Sender : TypeCodeAttributeData
     37         {
     38             [XmlElement("device")]
     39             public Device device { get; set; }
     40         }
     41 
     42 
     43         public class Receiver : TypeCodeAttributeData
     44         {
     45             [XmlElement("device")]
     46             public Device device { get; set; }
     47         }
     48 
     49         public class TypeCodeAttributeData
     50         {
     51             [XmlAttribute("typeCode")]
     52             public string typeCode { get; set; }
     53         }
     54         #endregion
     55 
     56         #region ClassCodeAttributeData
     57         public class Device : ClassCodeAttributeData
     58         {
     59             [XmlElement("id")]
     60             public IdWithItemData id { get; set; }
     61 
     62 
     63             [XmlAttribute("determinerCode")]
     64             public string determinerCode { get; set; }
     65 
     66         }
     67 
     68         public class ClassCodeAttributeData
     69         {
     70             [XmlAttribute("classCode")]
     71             public string classCode { get; set; }
     72         }
     73         #endregion
     74 
     75         #region ValueDataAttribute
     76         public class DisplayData
     77         {
     78             [XmlElement("displayName")]
     79             public ValueAttributeData displayName { get; set; }
     80         }
     81 
     82         public class UnitValueAttributeData : ValueAttributeData
     83         {
     84             [XmlAttribute("unit")]
     85             public string unit { get; set; }
     86         }
     87 
     88         public class PartData
     89         {
     90             [XmlElement("part")]
     91             public ValueAttributeData part { get; set; }
     92         }
     93 
     94         public class TelecomData
     95         {
     96             [XmlElement("item")]
     97             public ValueAttributeData item { get; set; }
     98         }
     99 
    100         public class ValueAttributeData
    101         {
    102             [XmlAttribute("value")]
    103             public string value { get; set; }
    104         }
    105         #endregion
    106 
    107 
    108 
    109         public class TypeValueAttributeData
    110         {
    111             [XmlAttribute("value")]
    112             public string value { get; set; }
    113 
    114             [XmlAttribute("type")]
    115             public string type { get; set; }
    116         }
    117 
    118         public class CodeAttributeData
    119         {
    120             [XmlAttribute("code")]
    121             public string code { get; set; }
    122         }
    123 
    124         #region Id
    125         public class TargetMessageData
    126         {
    127             [XmlElement("id")]
    128             public IdAttributeData id { get; set; }
    129         }
    130 
    131         public class IdWithItemData
    132         {
    133             [XmlElement("item")]
    134             public IdAttributeData item { get; set; }
    135         }
    136 
    137         public class IdAttributeData : ExtensionAttributeData
    138         {
    139             [XmlAttribute("root")]
    140             public string root { get; set; }
    141         }
    142 
    143         public class ExtensionAttributeData
    144         {
    145             [XmlAttribute("extension")]
    146             public string extension { get; set; }
    147         }
    148         #endregion
    149 
    150         public class IdData: ExtensionAttributeData
    151         {
    152             [XmlElement("id")]
    153             public string id { get; set; }
    154         }
    155 
    156         #endregion
    157 
    158     }
    View Code

      基本信息:

      1     public partial class XmlObj
      2     {
      3         public class BaseXmlObj
      4         {
      5             [XmlElement("id")]
      6             public IdAttributeData id { get; set; }
      7 
      8             [XmlElement("creationTime")]
      9             public ValueAttributeData creationTime { get; set; }
     10 
     11             [XmlElement("interactionId")]
     12             public IdAttributeData interactionId { get; set; }
     13 
     14             [XmlElement("processingCode")]
     15             public CodeAttributeData processingCode { get; set; }
     16 
     17             [XmlElement("acceptAckCode")]
     18             public CodeAttributeData acceptAckCode { get; set; }
     19 
     20             [XmlElement("receiver")]
     21             public Receiver receiver { get; set; }
     22 
     23             [XmlElement("sender")]
     24             public Sender sender { get; set; }
     25 
     26             [XmlElement("acknowledgement")]
     27             public Acknowledgement acknowledgement { get; set; }    
     28         }
     29 
     30         #region 基础类(细项类)
     31         public class BaseControlActProcess : ClassCodeAttributeData
     32         {
     33             [XmlAttribute("moodCode")]
     34             public string moodCode { get; set; }
     35 
     36             [XmlElement("queryAck")]
     37             public QueryAck queryAck { get; set; }
     38         }
     39 
     40         public class DownLocationData :ClassCodeAttributeData
     41         {
     42             [XmlElement("id")]
     43             public IdWithItemData id { get; set; }
     44 
     45             [XmlElement("name")]
     46             public NameItemPartData name { get; set; }
     47         }
     48 
     49         [XmlType("item")]
     50         public class Item
     51         {
     52             [XmlAttribute("root")]
     53             public string root { get; set; }
     54             [XmlAttribute("extension")]
     55             public string extension { get; set; }
     56         }
     57 
     58         public class QueryAck
     59         {
     60             [XmlElement("queryId")]
     61             public ExtensionAttributeData queryId { get; set; }
     62 
     63             [XmlElement("queryResponseCode")]
     64             public CodeAttributeData queryResponseCode { get; set; }
     65 
     66             [XmlElement("resultTotalQuantity")]
     67             public ValueAttributeData resultTotalQuantity { get; set; }
     68         }
     69 
     70         #region Acknowledgement
     71         public class Acknowledgement : TypeCodeAttributeData
     72         {
     73             [XmlElement("targetMessage")]
     74             public TargetMessageData targetMessage { get; set; }
     75 
     76             [XmlElement("acknowledgementDetail")]
     77             public AcknowledgementDetail acknowledgementDetail { get; set; }
     78         }
     79 
     80         public class AcknowledgementDetail
     81         {
     82             [XmlElement("text")]
     83             public ValueAttributeData text { get; set; }
     84         } 
     85         #endregion
     86 
     87         #region AssignedEntity
     88         public class AssignedEntity
     89         {
     90             [XmlElement("id")]
     91             public IdWithItemData id { get; set; }
     92 
     93             [XmlElement("assignedPerson")]
     94             public AssignedPerson assignedPerson { get; set; }
     95         }
     96 
     97         public class AssignedPerson
     98         {
     99             [XmlElement("name")]
    100             public NameItemPartData name { get; set; }
    101         }
    102         #endregion
    103 
    104         #region Patient
    105         public class Patient
    106         {
    107             [XmlArray("id")]
    108             public List<XmlObj.Item> id { get; set; }
    109 
    110             [XmlElement("statusCode")]
    111             public StatusCode statusCode { get; set; }
    112 
    113             [XmlElement("effectiveTime")]
    114             public EffectiveTime effectiveTime { get; set; }
    115 
    116             [XmlElement("patientPerson")]
    117             public PatientPerson patientPerson { get; set; }
    118 
    119             [XmlElement("providerOrganization")]
    120             public ProviderOrganization providerOrganization { get; set; }
    121 
    122             [XmlElement("subjectOf1")]
    123             public SubjectOf1 subjectOf1 { get; set; }
    124 
    125             [XmlElement("subjectOf2")]
    126             public SubjectOf2 subjectOf2 { get; set; }
    127 
    128             [XmlElement("coveredPartyOf")]
    129             public CoveredPartyOf coveredPartyOf { get; set; }
    130         }
    131 
    132         #region CoveredPartyOf
    133 
    134         public class CoveredPartyOf
    135         {
    136             [XmlElement("coverageRecord")]
    137             public CoverageRecord coverageRecord { get; set; }
    138         }
    139 
    140         public class CoverageRecord
    141         {
    142             [XmlElement("beneficiary")]
    143             public Beneficiary beneficiary { get; set; }
    144         }
    145 
    146         public class Beneficiary : XmlObj.TypeCodeAttributeData
    147         {
    148             [XmlElement("beneficiary")]
    149             public Beneficiary1 beneficiary { get; set; }
    150         }
    151 
    152         public class Beneficiary1 : XmlObj.ClassCodeAttributeData
    153         {
    154             [XmlElement("code")]
    155             public XmlObj.CodeSystemNameDisplayNameData code { get; set; }
    156         }
    157 
    158 
    159         #endregion
    160 
    161         public class SubjectOf2
    162         {
    163             [XmlElement("administrativeObservation")]
    164             public XmlObj.CodeValueData administrativeObservation { get; set; }
    165         }
    166 
    167         public class SubjectOf1
    168         {
    169             [XmlElement("queryMatchObservation")]
    170             public XmlObj.CodeValueData queryMatchObservation { get; set; }
    171         }
    172 
    173         public class ProviderOrganization
    174         {
    175             [XmlArray("id")]
    176             public List<XmlObj.Item> id { get; set; }
    177 
    178             [XmlElement("name")]
    179             public XmlObj.NameItemPartData name { get; set; }
    180 
    181             [XmlElement("contactParty")]
    182             public XmlObj.ClassSystemNameAttributeData contactParty { get; set; }
    183         }
    184 
    185         #region PatientPerson
    186         public class PatientPerson
    187         {
    188             [XmlArray("id")]
    189             public List<XmlObj.Item> id { get; set; }
    190 
    191             [XmlElement("idCategory")]
    192             public XmlObj.CodeSystemNameDisplayNameData idCategory { get; set; }
    193 
    194             [XmlElement("name")]
    195             public Name name { get; set; }
    196 
    197             [XmlElement("telecom")]
    198             public XmlObj.TelecomData telecom { get; set; }
    199 
    200             [XmlElement("administrativeGenderCode")]
    201             public XmlObj.CodeSystemNameDisplayNameData administrativeGenderCode { get; set; }
    202 
    203             [XmlElement("birthTime")]
    204             public XmlObj.ValueAttributeData birthTime { get; set; }
    205 
    206             [XmlElement("addr")]
    207             public Addr addr { get; set; }
    208 
    209             [XmlElement("maritalStatusCode")]
    210             public XmlObj.CodeSystemNameDisplayNameData maritalStatusCode { get; set; }
    211 
    212             [XmlElement("ethnicGroupCode")]
    213             public EthnicGroupCode maritalethnicGroupCodeStatusCode { get; set; }
    214 
    215             [XmlElement("asEmployee")]
    216             public AsEmployee asEmployee { get; set; }
    217 
    218             [XmlElement("asOtherIDs")]
    219             public List<AsOtherIDs> asOtherIDs { get; set; }
    220 
    221             [XmlElement("personalRelationship")]
    222             public PersonalRelationship personalRelationship { get; set; }
    223         }
    224 
    225         #region Name
    226         public class Name
    227         {
    228             [XmlElement("item")]
    229             public PatientItem item { get; set; }
    230         }
    231 
    232         public class PatientItem
    233         {
    234             [XmlElement("part")]
    235             public XmlObj.ValueAttributeData part { get; set; }
    236         }
    237         #endregion
    238 
    239         #region PersonalRelationship
    240         public class PersonalRelationship
    241         {
    242             [XmlElement("id")]
    243             public XmlObj.IdWithItemData id { get; set; }
    244 
    245             [XmlElement("code")]
    246             public XmlObj.CodeSystemNameDisplayNameData code { get; set; }
    247 
    248             [XmlElement("telecom")]
    249             public XmlObj.TelecomData telecom { get; set; }
    250 
    251             [XmlElement("relationshipHolder1")]
    252             public RelationshipHolder1 relationshipHolder1 { get; set; }
    253         }
    254 
    255         public class RelationshipHolder1
    256         {
    257             [XmlElement("name")]
    258             public XmlObj.NameItemPartData name { get; set; }
    259         }
    260         #endregion
    261 
    262         #region AsOtherIDs
    263         [XmlType("asOtherIDs")]
    264         public class AsOtherIDs
    265         {
    266             [XmlElement("id")]
    267             public XmlObj.IdWithItemData id { get; set; }
    268 
    269             [XmlElement("scopingOrganization")]
    270             public ScopingOrganization scopingOrganization { get; set; }
    271         }
    272 
    273         public class ScopingOrganization
    274         {
    275             [XmlElement("id")]
    276             public XmlObj.IdWithItemData id { get; set; }
    277         }
    278         #endregion
    279 
    280         #region AsEmployee
    281         public class AsEmployee
    282         {
    283             [XmlElement("occupationCode")]
    284             public XmlObj.CodeSystemNameDisplayNameData occupationCode { get; set; }
    285 
    286             [XmlElement("employerOrganization")]
    287             public EmployerOrganization employerOrganization { get; set; }
    288         }
    289 
    290         public class EmployerOrganization
    291         {
    292             [XmlElement("name")]
    293             public XmlObj.NameItemPartData name { get; set; }
    294 
    295             [XmlElement("contactParty")]
    296             public ContactParty contactParty { get; set; }
    297 
    298         }
    299 
    300         public class ContactParty
    301         {
    302             [XmlElement("telecom")]
    303             public XmlObj.TelecomData telecom { get; set; }
    304         }
    305         #endregion
    306 
    307         public class EthnicGroupCode
    308         {
    309             [XmlElement("item")]
    310             public XmlObj.CodeSystemNameDisplayNameData item { get; set; }
    311 
    312         }
    313 
    314         #region Addr
    315         public class Addr
    316         {
    317             [XmlArray("item")]
    318             public List<AddrItem> item { get; set; }
    319         }
    320 
    321         [XmlType("part")]
    322         public class AddrItem
    323         {
    324             [XmlAttribute("value")]
    325             public string value { get; set; }
    326 
    327             [XmlAttribute("type")]
    328             public string type { get; set; }
    329         }
    330         #endregion
    331 
    332         #endregion
    333 
    334         public class EffectiveTime
    335         {
    336             [XmlElement("low")]
    337             public XmlObj.ValueAttributeData low { get; set; }
    338         }
    339 
    340         public class StatusCode
    341         {
    342             [XmlAttribute("code")]
    343             public string code { get; set; }
    344         }
    345         #endregion
    346 
    347         #endregion
    348     }
    View Code

      需要转换的信息:

        public class BloodTransAppInfoAddObj
        {
            [XmlType("MCCI_IN000002UV01")]
            public class BloodTransAppInfoAdd: XmlObj.BaseXmlObj
            {
                
            }
        }

    这里单独建立一个对象以适用于XmlType特性修改。

    这里特别注意数组

    有两种转换方式:

    1.

                [XmlArray("id")]
                public List<XmlObj.Item> id { get; set; }

    适用于xml内容为:

    <id>
        <!-- @extension域ID,root为固定值 -->
        <item root="2.16.156.10011.2.5.1.5" extension="域ID(必填)"/>
        <!--@extension患者ID标识,root为固定值-->
        <item root="2.16.156.10011.2.5.1.4" extension="患者ID标识(必填)"/>
        <!--@extension门(急)诊号标识,root为固定值 -->
        <item root="2.16.156.10011.1.11" extension="门(急)诊号标识"/>
        <!--@extension住院号标识,root为固定值-->
        <item root="2.16.156.10011.1.12" extension="住院号标识"/>
    <!-- @extension病案号, root为固定值 -->
         <item root="2.16.156.10011.1.13" extension="病案号"/>
    </id>

    2.

                [XmlElement("asOtherIDs")]
                public List<AsOtherIDs> asOtherIDs { get; set; }

    适用于xml内容为:

    <asOtherIDs classCode="PAT">
        <!--城乡居民健康档案编号@extension-->
        <id>
            <item root="2.16.156.10011.1.2" extension="XXXXX" />
        </id>
        <scopingOrganization classCode="ORG" determinerCode="INSTANCE">
            <!--建档医疗机构组织机构代码@extension-->
            <id>
                <item root="2.16.156.10011.1.5" extension="XXXX" />
            </id>
        </scopingOrganization>
    </asOtherIDs>
    <asOtherIDs classCode="PAT">
        <!--就诊卡@extension-->
        <id>
            <item root="2.16.156.10011.2.5.1.6" extension="DXXXX" />
        </id>
    </asOtherIDs>
    <asOtherIDs classCode="PAT">
        <!--住院号extension-->
        <id>
            <item root="2.16.156.10011.1.12" extension="XXXXX" />
        </id>
    </asOtherIDs>
  • 相关阅读:
    Cents 7 Kubernetes
    Docker registry
    centos 7 安装 docker
    ToList()所带来的性能影响
    C#之Linq、where()、FindAll()的区别
    2.2 数据库高速缓冲区
    ORACLE之autotrace使用
    spring.net简介
    初识批处理
    TIBCO Rendezvous — 技术介绍
  • 原文地址:https://www.cnblogs.com/FlyStupidBird/p/14520275.html
Copyright © 2020-2023  润新知