zoukankan      html  css  js  c++  java
  • C#对象XML序列化

    一。 用法说明

    [XmlRootAttribute("BASEINFO")]     // 当该类为Xml根节点时,以此为根节点名称。 public class BASEINFO

    [XmlAttribute("IDCARD")]    // 表现为Xml节点属性。<... IDCARD="..."/> public string IDCARD

    [XmlElementAttribute("NAME", IsNullable = false)]    // 表现为Xml节点。<NAME>...</NAME> public string NAME

    [XmlElementAttribute("Area")]    // 表现为水平结构的Xml节点。<Area ... /><Area ... />public List<Area> data

    [XmlArrayAttribute("OPERATIONS", IsNullable = false)]    // 表现为Xml层次结构,根为OPERATIONS,其所属的每个该集合节点元素名为类名。<OPERATIONS><OPERATION>... </OPERATION></OPERATIONS>

    public List<OPERATION> data

    [XmlIgnoreAttribute]    // 忽略该元素的序列化。

    二。代码

    <V1>

       <OPERATIONS>
            <OPERATION>
              <NAME>oo</NAME>
              <DATE>2015/10/16 0:00:00</DATE>
            </OPERATION>
            <OPERATION>
              <NAME></NAME>
              <DATE>2015/10/16 0:00:00</DATE>
            </OPERATION>
          </OPERATIONS> 

    </V1>

    对应Model, Model定义好后可以对其进行序列化及反序列化

       public class V1    { 
    
        private List<OPERATION> data = new List<OPERATION>();
    
            [XmlArray("OPERATIONS")]
            [XmlArrayItem("OPERATION")]
            public List<OPERATION> Pdata
            {
                get { return data; }
    
    } }

     三。反序列化:

            /// <summary>
            /// xml格式的字串反序列化为指定Object
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="data"></param>
            /// <returns></returns>
            public static T XmlDeserialize<T>(string data)
            {
                XmlDocument xdoc = new XmlDocument();
                try
                {
                    xdoc.LoadXml(data);
    
                    XmlNodeReader reader = new XmlNodeReader(xdoc.DocumentElement);
                    XmlSerializer ser = new XmlSerializer(typeof(T));
                    object obj = ser.Deserialize(reader);
    
                     return (T)obj;
                }
                catch (Exception e)
                {
                    return default(T);
                }
            }
            #endregion
    

     参考URL:

    https://www.mgenware.com/blog/?p=142

    http://blog.csdn.net/philosophyatmath/article/details/28593153

  • 相关阅读:
    Gradle命令行操作
    Web项目构建
    Java构建
    任务操纵
    mysql 查看当前使用的配置文件my.cnf的方法(推荐)
    mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by
    Oracle注入速查表
    git 初始化项目操作
    mybatis 一次执行多条SQL MySql+Mybatis+Druid之SqlException:sql injection violation, multi-statement not allow
    文件存储 FileUtil FileBaseDto
  • 原文地址:https://www.cnblogs.com/kittyguo/p/4891388.html
Copyright © 2011-2022 走看看