XML 和 SOAP 序列化

1、Controller

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using Microsoft.AspNetCore.Mvc;namespace WebApplication.Controllers
{[Route("[controller]")][ApiController]public class ValuesController : ControllerBase{[HttpGet("e")]public IActionResult e(){XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(@"D:\5.xml");//Load加载XML文件,LoadXML加载XML字符串PRPM_IN406110UV01 xml1 = XmlUtil.XmlDeserialize<PRPM_IN406110UV01>(xmlDoc.InnerXml, Encoding.UTF8);return Ok(new { data = xml1 });}}
}

2、5.xml文件【不能带有xsi:type="***"相关内容,如果有请替换掉】

<PRPM_IN406110UV01><receiver typeCode="RCV"><device classCode="DEV" determinerCode="INSTANCE"></device></receiver><sender typeCode="SND"><device classCode="DEV" determinerCode="INSTANCE"></device></sender><acknowledgement typeCode="AA"></acknowledgement><controlActProcess classCode="CACT" moodCode="EVN"><subject typeCode="SUBJ"><registrationEvent classCode="REG" moodCode="EVN"><statusCode code="active"/><subject1 typeCode="SBJ"><assignedEntity classCode="ASSIGNED "><id><item extension="0157" root="2.16.156.10011.1.26"/></id><name><item><part value="123"/></item></name><statusCode code="active"/><assignedPrincipalOrganization classCode="ORG" determinerCode="INSTANCE"><name><item><part value="456"/></item></name></assignedPrincipalOrganization></assignedEntity></subject1></registrationEvent></subject></controlActProcess>
</PRPM_IN406110UV01>

3、实体类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Xml.Serialization;namespace WebApplication
{//[XmlType(TypeName = "PRPM_IN406110UV01")][XmlRoot("PRPM_IN406110UV01")]public class PRPM_IN406110UV01{public Receiver receiver { get; set; }public Sender sender { get; set; }public Acknowledgement acknowledgement { get; set; }[XmlArray("controlActProcess")]public List<Subject> controlActProcess { get; set; }}[XmlType(TypeName = "receiver")]public class Receiver{[XmlAttribute]public string typeCode { get; set; }public Device device { get; set; }}[XmlType(TypeName = "sender")]public class Sender{[XmlAttribute]public string typeCode { get; set; }public Device device { get; set; }}#region Device[XmlType(TypeName = "device")]public class Device{[XmlAttribute]public string classCode { get; set; }[XmlAttribute]public string determinerCode { get; set; }public DeviceId id { get; set; }}[XmlType(TypeName = "id")]public class DeviceId{public DeviceIdItem item { get; set; }}[XmlType(TypeName = "item")]public class DeviceIdItem{[XmlAttribute]public string extension { get; set; }[XmlAttribute]public string root { get; set; }}#endregion#region controlActProcess[XmlType(TypeName = "controlActProcess")]public class ControlActProcess{[XmlAttribute]public string classCode { get; set; }[XmlAttribute]public string moodCode { get; set; }//[XmlArray("subject")][XmlElement]public List<Subject> subject { get; set; }}[XmlType(TypeName = "subject")]public class Subject{[XmlAttribute]public string typeCode { get; set; }public RegistrationEvent registrationEvent { get; set; }}[XmlType(TypeName = "registrationEvent")]public class RegistrationEvent{[XmlAttribute]public string classCode { get; set; }[XmlAttribute]public string moodCode { get; set; }public StatusCode statusCode { get; set; }public Subject1 subject1 { get; set; }}[XmlType(TypeName = "statusCode")]public class StatusCode{[XmlAttribute]public string code { get; set; }}#region Subject1[XmlType(TypeName = "subject1")]public class Subject1{[XmlAttribute]public string typeCode { get; set; }public Subject1AssignedEntity assignedEntity { get; set; }}#region Subject1AassignedEntity[XmlType(TypeName = "assignedEntity")]public class Subject1AssignedEntity{[XmlAttribute]public string classCode { get; set; }public Subject1AssignedId id { get; set; }public Subject1AssignedCode code { get; set; }public Subject1AssignedName name { get; set; }public Subject1AssignedAssignedPrincipalOrganization assignedPrincipalOrganization { get; set; }}//[XmlType(TypeName = "id")]public class Subject1AssignedId{public Subject1AssignedIdItem item { get; set; }}//[XmlType(TypeName = "item")]public class Subject1AssignedIdItem{[XmlAttribute]public string extension { get; set; }[XmlAttribute]public string root { get; set; }}#endregion#region Subject1AssignedCode[XmlType(TypeName = "code")]public class Subject1AssignedCode{[XmlAttribute]public string code { get; set; }[XmlAttribute]public string codeSystem { get; set; }[XmlAttribute]public string codeSystemName { get; set; }public Subject1AssignedCodeDisplayName displayName { get; set; }}[XmlType(TypeName = "displayName")]public class Subject1AssignedCodeDisplayName{[XmlAttribute]public string value { get; set; }}#endregion//[XmlType(TypeName = "name")]public class Subject1AssignedName{public Subject1AssignedNameItem item { get; set; }}//[XmlType(TypeName = "item")]public class Subject1AssignedNameItem{public Subject1AssignedNameItemPart part { get; set; }}//[XmlType(TypeName = "assignedPrincipalOrganization")]public class Subject1AssignedAssignedPrincipalOrganization{[XmlAttribute]public string classCode { get; set; }[XmlAttribute]public string determinerCode { get; set; }}[XmlType(TypeName = "part")]public class Subject1AssignedNameItemPart{[XmlAttribute]public string value { get; set; }}#endregion#endregion#region Acknowledgement[XmlType(TypeName = "acknowledgement")]public class Acknowledgement{[XmlAttribute]public string typeCode { get; set; }}#endregion
}

4、XmlUtil

using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;namespace WebApplication
{public static class XmlUtil{/// <summary>/// 将一个对象序列化为XML字符串/// </summary>/// <param name="o">要序列化的对象</param>/// <param name="encoding">编码方式</param>/// <returns>序列化产生的XML字符串</returns>public static string XmlSerialize(object o, Encoding encoding){if (o == null){throw new ArgumentNullException("o");}if (encoding == null){throw new ArgumentNullException("encoding");}using (MemoryStream stream = new MemoryStream()){XmlSerializer serializer = new XmlSerializer(o.GetType());XmlWriterSettings settings = new XmlWriterSettings();settings.Indent = true;settings.NewLineChars = "\r\n";settings.Encoding = encoding;settings.IndentChars = "  ";settings.OmitXmlDeclaration = true;using (XmlWriter writer = XmlWriter.Create(stream, settings)){//Create our own namespaces for the outputXmlSerializerNamespaces ns = new XmlSerializerNamespaces();//Add an empty namespace and empty valuens.Add("", "");serializer.Serialize(writer, o, ns);writer.Close();}stream.Position = 0;using (StreamReader reader = new StreamReader(stream, encoding)){return reader.ReadToEnd();}}}/// <summary>/// 从XML字符串中反序列化对象/// </summary>/// <typeparam name="T">结果对象类型</typeparam>/// <param name="s">包含对象的XML字符串</param>/// <param name="encoding">编码方式</param>/// <returns>反序列化得到的对象</returns>public static T XmlDeserialize<T>(string s, Encoding encoding){if (string.IsNullOrEmpty(s))throw new ArgumentNullException("s");if (encoding == null)throw new ArgumentNullException("encoding");XmlSerializer mySerializer = new XmlSerializer(typeof(T));using (MemoryStream ms = new MemoryStream(encoding.GetBytes(s))){using (StreamReader sr = new StreamReader(ms, encoding)){return (T)mySerializer.Deserialize(sr);}}}/// <summary>/// 将一个对象按XML序列化的方式写入到一个文件/// </summary>/// <param name="o">要序列化的对象</param>/// <param name="path">保存文件路径</param>/// <param name="encoding">编码方式</param>public static void XmlSerializeToFile(object o, string path, Encoding encoding){if (string.IsNullOrEmpty(path)){throw new ArgumentNullException("path");}if (o == null){throw new ArgumentNullException("o");}if (encoding == null){throw new ArgumentNullException("encoding");}using (FileStream file = new FileStream(path, FileMode.Create, FileAccess.Write)){XmlSerializer serializer = new XmlSerializer(o.GetType());XmlWriterSettings settings = new XmlWriterSettings();settings.Indent = true;settings.NewLineChars = "\r\n";settings.Encoding = encoding;settings.IndentChars = "    ";using (XmlWriter writer = XmlWriter.Create(file, settings)){serializer.Serialize(writer, o);writer.Close();}}}/// <summary>/// 读入一个文件,并按XML的方式反序列化对象。/// </summary>/// <typeparam name="T">结果对象类型</typeparam>/// <param name="path">文件路径</param>/// <param name="encoding">编码方式</param>/// <returns>反序列化得到的对象</returns>public static T XmlDeserializeFromFile<T>(string path, Encoding encoding){if (string.IsNullOrEmpty(path))throw new ArgumentNullException("path");if (encoding == null)throw new ArgumentNullException("encoding");string xml = File.ReadAllText(path, encoding);return XmlDeserialize<T>(xml, encoding);}}
}

5、Json数据

{"data": {"receiver": {"typeCode": "RCV","device": {"classCode": "DEV","determinerCode": "INSTANCE","id": null}},"sender": {"typeCode": "SND","device": {"classCode": "DEV","determinerCode": "INSTANCE","id": null}},"acknowledgement": {"typeCode": "AA"},"controlActProcess": [{"typeCode": "SUBJ","registrationEvent": {"classCode": "REG","moodCode": "EVN","statusCode": {"code": "active"},"subject1": {"typeCode": "SBJ","assignedEntity": {"classCode": "ASSIGNED ","id": {"item": {"extension": "0157","root": "2.16.156.10011.1.26"}},"code": null,"name": {"item": {"part": {"value": "儿科门诊"}}},"assignedPrincipalOrganization": {"classCode": "ORG","determinerCode": "INSTANCE"}}}}}]}
}

*
*
*

C# XML 解析样例相关推荐

  1. ApiSix基础入门:协议解析-样例详解

    一 .http协议配置 1.反向代理测试 ①启动一个正常的web服务器 也可以使用已经安装的openresty #启动web服务器 默认80端口 /usr/local/openresty/bin/op ...

  2. 一个完整的schema验证xml的样例

    xml文件: <reference xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/ ...

  3. 爬虫基础-bs4数据解析样例

    抓取三国演义小说 # -*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup import lxml if __name_ ...

  4. GoJS-FlowChart样例代码分析

    var $ = go.GraphObject.make; // 别名,方便使用myDiagram =$(go.Diagram, "myDiagramDiv", // 通过id指定画 ...

  5. java使用xsd校验xml样例

    知识点: XSD文件是指XML结构定义 ( XML Schemas Definition )文件,是DTD的替代品.可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合 ...

  6. 【DPDK】dpdk样例源码解析之五:dpdk-rss

    本篇文章介绍DPDK-RSS相关的功能,RSS是网卡提供的分流机制,简单讲就是一个HASH值,如果使用DPDK收包,开启RSS后,会根据配置项将数据包分流到不同的收包队列,用来是实现负载均衡. 通过D ...

  7. tensorflow——cifar10 样例解析

    从 tensorflow 提供的 cifar10 分类程序样例学习程序的主要框架 最外层结构: 利用 tf.app.flags 解析命令行参数 利用 tf.app.run 启动主函数,在主函数中训练 ...

  8. 【DPDK】dpdk样例源码解析之三:dpdk-l3fwd_001

    本篇文章主要介绍dpdk-l3fwd实例源码,通过分析代码逻辑,学习DPDK中几个API接口作用以及如何使用? 操作系统版本:CentOS 8.4 DPDK版本:dpdk-20.11.3 如何单独创建 ...

  9. 【DPDK】dpdk样例源码解析之二:dpdk-helloworld

    对dpdk-helloworld示例源码进行介绍分析,Hello World 示例设置 DPDK环境抽象层 (EAL),并向每个启用 DPDK的内核打印一条简单的"Hello World&q ...

最新文章

  1. 如何从ATS获取客户端平均响应时间(单位,毫秒)?
  2. shell编程系列7--shell中常用的工具find、locate、which、whereis
  3. OpenCV LATCH Matching描述符匹配算法的实例(附完整代码)
  4. git管理复杂项目代码
  5. 网页怎么向服务器请求数据,网页怎么向服务器请求数据库
  6. scala的list源码解密
  7. 转载:【Oracle 集群】RAC知识图文详细教程(四)--缓存融合技术和主要后台进程
  8. MiniTable 16 网络版安装部署
  9. 在firefox 2.0.0.3中使用onenote 2007收集资料
  10. 2021年中国电动自行车行业现状分析:产业特征明显,“新国标”促使行业发展更加规范化[图]
  11. 简单的收支记账软件的实现详细解释(不连接数据库)
  12. 家谱排版制作软件怎么三步成谱
  13. 怎么把flac转换为mp3格式
  14. LeetCode练习题:斐波那契数列
  15. 计算机科学和物理哪个难,据说这是期末考试难度最大的15个专业,你上榜了吗?...
  16. TINA导入Ti官网器件
  17. 干货 | 因果推断在项目价值评估中的应用
  18. [Demo]用简单的html,css做一个漂亮的网页!
  19. 最通俗易懂的冒泡排序原理
  20. CentOS8_CA

热门文章

  1. Oracle授权普通用户 kill session权限
  2. JQuery、Ajax基础语法
  3. c语言计算个人所得税作业,写一个程序,输入任何一个公民的月收入和五险一金,能够计算他应缴纳的个人所得税.用C语言...
  4. kubectl命令应用
  5. 写一篇关于5G网络的论文
  6. cookie写_cookie-parser读操作
  7. Maya多版本下载和安装
  8. 两相步进电机FOC矢量控制Simulink仿真模型
  9. 51单片机 DS18B20温传
  10. 政务部门数据交换共享方式对比