default.xml 文件如下:

<config>
<partnerships>
  <partnership name="Main_Listener">
    <loggers isAdditive="false">
      <logger type="file" name="Filelogger">
        <propertys>
        <property name="FileName" value="log\\outbound.log"/>
        <property name="MaxFileSize" value="10MB"/>
        <property name="MaxBackupIndex" value="10"/>
        <property name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n"/>
        </propertys>
      </logger>
      <logger type="file" name="Filelogger">
        <propertys>
        <property name="FileName" value="log\\outbound.log"/>
        <property name="MaxFileSize" value="10MB"/>
        <property name="MaxBackupIndex" value="10"/>
        <property name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n"/>
        </propertys>
      </logger>
    </loggers>
    <senders>
      <sender type="file">
        <propertys>
          <property name="PollingDir" value="WMSin"/>
          <property name="Interval" value="10"/>
          <property name="IsBackup" value="true"/>
          <property name="MaxFilenameLength" value="31"/>
          <property name="BackupDir" value="ARWMSin\\$date.yyyyMMdd$"/>
        </propertys>
      </sender>
      <sender type="file">
        <propertys>
          <property name="PollingDir" value="WMSin"/>
          <property name="Interval" value="50"/>
          <property name="IsBackup" value="true"/>
          <property name="MaxFilenameLength" value="33"/>
          <property name="BackupDir" value="ARWMSin\\$date.yyyyMMdd$"/>
        </propertys>
      </sender>
      <sender type="file">
        <propertys>
          <property name="PollingDir" value="WMSin"/>
          <property name="Interval" value="50"/>
          <property name="IsBackup" value="true"/>
          <property name="MaxFilenameLength" value="34"/>
          <property name="BackupDir" value="ARWMSin\\$date.yyyyMMdd$"/>
        </propertys>
      </sender>
    </senders>
    <receivers>
      <receiver type="exceed">
        <propertys>
          <property name="IsBackup" value="true"/>
          <property name="OriginalName" value="Backup\\In\\$date.yyyyMMdd$\\$Doctype$\\$Doctype$-$GUI$-$date.HHmmss$.ori.xml"/>
          <property name="ResponseName" value="Backup\\In\\$date.yyyyMMdd$\\$Doctype$\\$Doctype$-$GUI$-$date.HHmmss$.rsp.xml"/>
          <property name="ErrorName" value="inbound\\reprocess\\$Doctype$-$GUI$-$date.HHmmss$.err.xml"/>
        </propertys>
      </receiver>
    </receivers>
    <processors>
      <processor name="com.creaction.central.processor.EncodingProcessor">
        <propertys>
          <property name="FromEncoding" value="UTF-8"/>
          <property name="ToEncoding" value="GB2312"/>
        </propertys>
      </processor>
      <processor name="com.creaction.central.processor.ElemGetProcessor">
        <propertys>
          <property name="PropName" value="Doctype"/>
          <property name="TagName" value="Doctype"/>
        </propertys>
      </processor>
      <processor name="com.creaction.central.processor.ElemGetProcessor">
        <propertys>
          <property name="PropName" value="GUI"/>
          <property name="TagName" value="GUI"/>
        </propertys>
      </processor>
      <processor name="com.creaction.central.processor.XSLProcessor">
        <propertys>
          <property name="XSLFile" value=".\\transform\\$Doctype$.xsl"/>
        </propertys>
      </processor>
    </processors>
  </partnership>
 
</partnerships>
</config>

xml反序列化MModel封装各种类:

[XmlType(TypeName = "config")]
    public  class ConfigFileModel
    {
        [XmlArray("partnerships")]
        public List<partnership> partnerships { get; set; }
    }
    [XmlType(TypeName = "partnership")]
    public class partnership
    {
        [XmlAttribute]
        public string name { get; set; }

[XmlArray("loggers")]
        public List<logger> loggers { get; set; }

[XmlArray("senders")]
        public List<sender> senders { get; set; }

[XmlArray("receivers")]
        public List<receiver> receivers { get; set; }

[XmlArray("processors")]
        public List<processor> processors { get; set; }
    }

#region logger

[XmlType(TypeName = "logger")]
    public class logger
    {
        [XmlAttribute]
        public string isAdditive { get; set; }
        [XmlAttribute]
        public string type { get; set; }
        [XmlAttribute]
        public string name { get; set; }
        [XmlArray("propertys")]
        public List<property> propertys { get; set; }
    }

#endregion

#region sender
    [XmlType(TypeName = "sender")]
    public class sender
    {
        [XmlAttribute]
        public string type { get; set; }

[XmlArray("propertys")]
        public List<property> propertys { get; set; }
    }

#endregion

#region receiver

[XmlType(TypeName = "receiver")]
    public class receiver
    {
        [XmlAttribute]
        public string type { get; set; }

[XmlArray("propertys")]
        public List<property> propertys { get; set; }
    }

#endregion

#region processor
    [XmlType(TypeName = "processor")]
    public class processor
    {
        [XmlAttribute]
        public string type { get; set; }

[XmlArray("propertys")]
        public List<property> propertys { get; set; }
    }

#endregion

[XmlType(TypeName = "property")]
    public class property
    {
        [XmlAttribute]
        public string name { get; set; }

[XmlAttribute]
        public string value { get; set; }
    }

C# XML序列化和反序列化方法如下:

#region 指定xml路径执行序列化和反序列化
         /// <summary>
        /// XML序列化某一类型到指定的文件
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="obj"></param>
        /// <param name="type"></param>
        public static void SerializeToXml<T>(string filePath, T obj)
        {
            try
            {
                using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
                {
                    System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    xs.Serialize(writer, obj);
                }
            }
            catch (Exception ex)
            {
            }
        }
        /// <summary>
        /// 从某一XML文件反序列化到某一类型
        /// </summary>
        /// <param name="filePath">待反序列化的XML文件名称</param>
        /// <param name="type">反序列化出的</param>
        /// <returns></returns>
        public static T DeserializeFromXml<T>(string filePath)
        {
            try
            {
                if (!System.IO.File.Exists(filePath))
                    throw new ArgumentNullException(filePath + " not Exists");

using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath))
                {
                    System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    T ret = (T)xs.Deserialize(reader);
                    return ret;
                }
            }
            catch (Exception ex)
            {
                return default(T);
            }
        }
        #endregion

控制台程序执行:

static void Main(string[] args)
        {
            ConfigFileModel xml1 = CCERP.Base.Common.XmlHelper.DeserializeFromXml<ConfigFileModel>("default.xml");

Console.WriteLine(xml1.partnerships[0].processors[0].propertys[1].name);

Console.ReadLine();
        }

C# 复杂格式多级深度XML序列化反序列化的更多相关文章

  1. C# XML序列化/反序列化参考

    .NET提供了很不错的XML序列化/反序列化器,(它们所在的命名空间为System.Xml.Serialization)这是很方便的,下面对它的使用做一些总结,以供参考. 1,简单序列化 public ...

  2. C# Json库 和 xml 序列化反序列化 存在的问题

    json 正常情况下不会对私有成员进行序列化和反序列化, 因此在用json做深拷贝时, 就会丢失数据. 解决办法:       声明成公有成员. json在序列化和反序列化时, 如果类中有IComma ...

  3. php json与xml序列化/反序列化

    在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记 简单数组js ...

  4. XML序列化反序列化—常用类

    public class XMLSerializer    {        #region (public) xml序列化        /// <summary>        /// ...

  5. C# XML序列化/反序列化类XmlSerializer使用示例

    using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; ...

  6. XML序列化反序列化

    using System; using System.Collections.Generic; using System.IO; using System.Xml.Serialization; nam ...

  7. XML序列化/反序列化数据库形式保存和读取。

    直接上码: 首先创建class1类 public class Class1 { public string name { get; set; } public int age { get; set; ...

  8. C# WPF xml序列化 反序列化

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  9. XML序列化与反序列化接口对接实战,看这篇就够了

    关键字:c# .NET XML 序列化 反序列化 本文为接口对接实践经验分享,不对具体的XML概念定义进行阐述:涉及工具类及处理方法已在生产环境使用多年,可放心使用.当然如果你发现问题,或有不同想法, ...

随机推荐

  1. Int 型数值存储

    1. Int 在计算机中占 4 Byte, 共 32 位, 最大正数为 2147483647, 最小负数为 -2147483648 2. 正数存储在计算机中的形式为原码,最大正数的十六进制形式为 0X ...

  2. 前端 ui 框架

    Bootstrap:http://getbootstrap.com/css/ ant-design:https://ant.design/ weui:https://weui.io/ amazeui: ...

  3. 《C++ Primer Plus》第7章 函数——C++的编程模块 学习笔记

    函数是C++的编程模块.要使用函数,必须提供定义和原型,并调用该函数.函数定义是实现函数功能的代码:函数原型描述了函数的接口:传递给函数的值的书目和种类以及函数的返回类型.函数调用使得程序将参数传递给 ...

  4. 【Redis】 make编译是提示 make cc Command not found

    在linux系统上对redis源码进行编译时提示提示“make cc Command not found,make: *** [adlist.o] Error 127”. 这是由于系统没有安装gcc环 ...

  5. nexus 增加代理仓库 无法搜到snapshot的jar包 解决方法

    如题, nexus 私服 增加了另一个 私服,  但是无法搜到 版本中带有 snapshot字样的 jar包. 环境情况: 1.老私服: 首先版本中带有 snapshot字样的 jar包,是发布在 老 ...

  6. install kubernetes dashboard 安装 kubernetes dashboard 详细

    参考: http://www.bubuko.com/infodetail-2242562.html http://www.cnblogs.com/zhenyuyaodidiao/p/6500897.h ...

  7. 聊聊对APM的理解

    本文主要从以下几个列举对APM的认识: -什么是APM工具 -为什么要用APM工具,APM工具的价值在哪里: -什么样的APM工具适合于传统金融业: -如何用好APM工具:    -精准告警    - ...

  8. eclipse 改变颜色,背景

    Eclipse背景颜色修改: 操作界面默认颜色为白色.对于我们长期使用电脑编程的人来说,白色很刺激我们的眼睛,所以我经常会改变workspace的背景色,使眼睛舒服一些.设置方法如下: 1.打开win ...

  9. 小程序开通微信支付 --- 微信商户平台绑定微信小程序APPID

    首先情况是这样的:现有公司有个公众号,已经开通了微信支付(已经有一个商户平台),现在需要开发 微信小程序(也有微信支付),如果在小程序里面重新申请 微信支付,就显得比较麻烦.腾讯官方已经提供了 一个商 ...

  10. MUI窗口管理

    参考:窗口管理 http://dev.dcloud.net.cn/mui/window/ 页面初始化:在app开发中,若要使用HTML5+扩展api,必须等plusready事件发生后才能正常使用,m ...