C#实现实体类和XML相互转换

发布时间 - 2026-01-11 00:02:32    点击率:

一、实体类转换成XML

将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化

public static string XmlSerialize<T>(T obj)
{
  using (StringWriter sw = new StringWriter())
  {
    Type t= obj.GetType();    
    XmlSerializer serializer = new XmlSerializer(obj.GetType());
    serializer.Serialize(sw, obj);
    sw.Close();
    return sw.ToString();
  }
}

示例:

1、定义实体类

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
 [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
 public class Request
 {

  public string System { get; set; }
  public string SecurityCode { get; set; }
  public PatientBasicInfo PatientInfo { get; set; }  
 }

 /// <remarks/>
 [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
 public partial class PatientBasicInfo
 {
  public string PatientNo { get; set; }
  public string PatientName { get; set; }
  public string Phoneticize { get; set; }
  public string Sex { get; set; }
  public string Birth { get; set; }
  public string BirthPlace { get; set; }
  public string Country { get; set; }
  public string Nation { get; set; }
  public string IDNumber { get; set; }
  public string SecurityNo { get; set; }
  public string Workunits { get; set; }
  public string Address { get; set; }
  public string ZIPCode { get; set; }
  public string Phone { get; set; }
  public string ContactPerson { get; set; }
  public string ContactShip { get; set; }
  public string ContactPersonAdd { get; set; }
  public string ContactPersonPhone { get; set; }
  public string OperationCode { get; set; }
  public string OperationName { get; set; }
  public string OperationTime { get; set; }
  public string CardNo { get; set; }
  public string ChangeType { get; set; }

 }

2、给实体类赋值,并通过序列化将实体类转换成XML格式的字符串

Request patientIn = new Request();
   patientIn.System = "HIS";
   patientIn.SecurityCode = "HIS5";

   PatientBasicInfo basicInfo = new PatientBasicInfo();
   basicInfo.PatientNo = "1234";
   basicInfo.PatientName = "测试";
   basicInfo.Phoneticize = "";
   basicInfo.Sex = "1";
   basicInfo.Birth = "";
   basicInfo.BirthPlace = "";
   basicInfo.Country = "";
   basicInfo.Nation = "";
   basicInfo.IDNumber = "";
   basicInfo.SecurityNo = "";
   basicInfo.Workunits = "";
   basicInfo.Address = "";
   basicInfo.ZIPCode = "";
   basicInfo.Phone = "";
   basicInfo.ContactShip = "";
   basicInfo.ContactPersonPhone = "";
   basicInfo.ContactPersonAdd = "";
   basicInfo.ContactPerson = "";
   basicInfo.ChangeType = "";
   basicInfo.CardNo = "";
   basicInfo.OperationCode = "";
   basicInfo.OperationName = "";
   basicInfo.OperationTime = "";

   patientIn.PatientInfo = basicInfo;

   //序列化
   string strxml = XmlSerializeHelper.XmlSerialize<Request>(patientIn);

3、生成的XML实例

<?xml version="1.0" encoding="utf-16"?>
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <System>HIS</System>
 <SecurityCode>HIS5</SecurityCode>
 <PatientInfo>
 <PatientNo>1234</PatientNo>
 <PatientName>测试</PatientName>
 <Phoneticize />
 <Sex>1</Sex>
 <Birth />
 <BirthPlace />
 <Country />
 <Nation />
 <IDNumber />
 <SecurityNo />
 <Workunits />
 <Address />
 <ZIPCode />
 <Phone />
 <ContactPerson />
 <ContactShip />
 <ContactPersonAdd />
 <ContactPersonPhone />
 <OperationCode />
 <OperationName />
 <OperationTime />
 <CardNo />
 <ChangeType />
 </PatientInfo>
</Request>

二、将XML转换成实体类

把XML转换成相应的实体类,需要使用到XmlSerializer类的Deserialize方法,将XML进行反序列化。

public static T DESerializer<T>(string strXML) where T:class
{
  try
 {
   using (StringReader sr = new StringReader(strXML))
   {
    XmlSerializer serializer = new XmlSerializer(typeof(T));
    return serializer.Deserialize(sr) as T;
   }
  }
  catch (Exception ex)
  {
   return null;
  }
}

示例:

将上例中序列化后的XML反序列化成实体类

//反序列化
Request r = XmlSerializeHelper.DESerializer<Request>(strxml);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# C#  # XML转换成实体类  # C#实体类转换成XML  # C#实现XML与实体类之间相互转换的方法(序列化与反序列化)  # C#实现实体类和XML的相互转换  # 转换成  # 实体类  # 序列化  # 大家多多  # AnonymousType  # true  # XmlRootAttribute  # false  # IsNullable  # Namespace  # System  # color  # XmlTypeAttribute  # Serialization  # Xml  # PatientName  # PatientNo  # partial  # Birth  # Sex 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Swift开发中switch语句值绑定模式  英语简历制作免费网站推荐,如何将简历翻译成英文?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  Laravel如何自定义分页视图?(Pagination示例)  微信小程序 闭包写法详细介绍  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何快速使用云服务器搭建个人网站?  🚀拖拽式CMS建站能否实现高效与个性化并存?  Laravel Fortify是什么,和Jetstream有什么关系  动图在线制作网站有哪些,滑动动图图集怎么做?  高防服务器租用首荐平台,企业级优惠套餐快速部署  Bootstrap整体框架之JavaScript插件架构  JavaScript如何实现错误处理_try...catch如何捕获异常?  bootstrap日历插件datetimepicker使用方法  Laravel如何使用Livewire构建动态组件?(入门代码)  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  微信小程序 canvas开发实例及注意事项  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  如何在IIS7中新建站点?详细步骤解析  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  如何撰写建站申请书?关键要点有哪些?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  在线教育网站制作平台,山西立德教育官网?  Python数据仓库与ETL构建实战_Airflow调度流程详解  晋江文学城电脑版官网 晋江文学城网页版直接进入  如何用美橙互联一键搭建多站合一网站?  魔方云NAT建站如何实现端口转发?  Laravel怎么判断请求类型_Laravel Request isMethod用法  简单实现Android验证码  网站建设整体流程解析,建站其实很容易!  Python文件操作最佳实践_稳定性说明【指导】  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何自定义建站之星网站的导航菜单样式?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  网易LOFTER官网链接 老福特网页版登录地址  Swift中switch语句区间和元组模式匹配  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?