首选:我的XML文件如下(mysql表里导出的):几千条,就选2条做例子。

<?xml version="1.0" encoding="utf-8" ?>
<RECORDS>
<RECORD>
<CardId>13</CardId>
<CardNo>DSL0000011</CardNo>
<IdNo>321283198410201416</IdNo>
<Name>林黛玉</Name>
<BrithDay>1955/7/13</BrithDay>
<Sex>M</Sex>
<Phone></Phone>
<Balance>3065.84</Balance>
<Point>600</Point>
<Level>普通卡</Level>
<ActiveDeviceSN>98261720412341</ActiveDeviceSN>
<ActiveStaffName>贾母</ActiveStaffName>
<ActiveTime>2017/11/3 11:52:00</ActiveTime>
<LatestUseTime>2017/12/19 10:37:14</LatestUseTime>
<ExpireTime>2027/11/3 11:52:00</ExpireTime>
<Status>0</Status>
<CreateBy></CreateBy>
<CreateTime>2017/11/3 11:52:00</CreateTime>
<UpdateBy>1</UpdateBy>
<UpdateTime>2017/11/3 14:15:04</UpdateTime>
<IsDelete>0</IsDelete>
</RECORD>
<RECORD>
<CardId>14</CardId>
<CardNo>DSL0000011</CardNo>
<IdNo>321283198410201416</IdNo>
<Name>贾宝玉</Name>
<BrithDay>1992/7/13</BrithDay>
<Sex>M</Sex>
<Phone></Phone>
<Balance>36.15</Balance>
<Point>200</Point>
<Level>银卡</Level>
<ActiveDeviceSN>98261720412341</ActiveDeviceSN>
<ActiveStaffName>贾雨村</ActiveStaffName>
<ActiveTime>2017/11/3 11:52:00</ActiveTime>
<LatestUseTime>0001/1/1 00:00:00</LatestUseTime>
<ExpireTime>2027/11/3 11:52:00</ExpireTime>
<Status>0</Status>
<CreateBy></CreateBy>
<CreateTime>2017/11/3 11:52:00</CreateTime>
<UpdateBy>1</UpdateBy>
<UpdateTime>2017/11/3 14:15:04</UpdateTime>
<IsDelete>0</IsDelete>
</RECORD>
</RECORDS>

建的实体类如下:

    [XmlRoot("RECORDS")]
public class SetDataModel
{
[XmlElement("RECORD")] public List<OldCard> Cards { get; set; }
} [XmlType("RECORD")]
public class OldCard
{
public int CardId { get; set; }
public string CardNo { get; set; }
public string IdNo { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
public decimal? Balance { get; set; }
public int? Point { get; set; }
public string Level { get; set; }
public string ActiveDeviceSN { get; set; }
public string ActiveStaffName { get; set; }
[XmlElement("ActiveTime")]
public string ActiveTime2
{
get { return ActiveTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); }
set { ActiveTime = DateTime.Parse(value); }
}
[XmlIgnore]
public Nullable<System.DateTime> ActiveTime { get; set; }
[XmlElement("LatestUseTime")]
public string LatestUseTime2
{
get { return LatestUseTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); }
set { LatestUseTime = DateTime.Parse(value); }
}
[XmlIgnore]
public Nullable<System.DateTime> LatestUseTime { get; set; }
[XmlElement("ExpireTime")]
public string ExpireTime2
{
get { return ExpireTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); }
set { ExpireTime = DateTime.Parse(value); }
}
[XmlIgnore]
public Nullable<System.DateTime> ExpireTime { get; set; }
public int? Status { get; set; }
[XmlElement("BrithDay")]
public string BrithDay2
{
get { return BrithDay.Value.ToString("yyyy-MM-dd HH:mm:ss"); }
set { BrithDay = DateTime.Parse(value); }
}
[XmlIgnore]
public DateTime? BrithDay { get; set; }
public string StatusName { get; set; } [XmlElement("CreateBy")]
public string CreateByStr
{
get { return CreateBy.ToString(); }
set { if (value == "") CreateBy = ; else CreateBy = Convert.ToInt32(value); }
}
[XmlIgnore]
public int CreateBy { get; set; }
[XmlElement("CreateTime")]
public string CreateTime2
{
get { return CreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); }
set { CreateTime = DateTime.Parse(value); }
}
[XmlIgnore]
public Nullable<System.DateTime> CreateTime { get; set; }
[XmlElement("UpdateBy")]
public string UpdateByStr
{
get { return UpdateBy.ToString(); }
set { if (value == "") UpdateBy = ; else UpdateBy = Convert.ToInt32(value); }
}
[XmlIgnore]
public Nullable<int> UpdateBy { get; set; }
[XmlElement("UpdateTime")]
public string UpdateTime2
{
get
{
return UpdateTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
}
set { UpdateTime = DateTime.Parse(value); }
}
[XmlIgnore]
public Nullable<System.DateTime> UpdateTime { get; set; }
public bool IsDelete { get; set; } }

实体赋值的方法如下:

      public void SetCardData()
{ //StreamReader sr = new StreamReader(@"d:\Card.json");
//string json = sr.ReadToEnd();
//var data = Newtonsoft.Json.JsonConvert.DeserializeObject<SetDataModel>(json);
StreamReader sr = new StreamReader(@"d:\Card.xml");
string xml = sr.ReadToEnd();
sr.Close();
var data = DESerializer<SetDataModel>(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;
}
}

 困扰1:时间类型,转换直接报错

字符串“2017/11/3 11:52:00”不是有效的 AllXsd 值。

所以才要把

public Nullable<System.DateTime> CreateTime { get; set; }

写成:

        [XmlElement("CreateTime")]
public string CreateTime2
{
get { return CreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); }
set { CreateTime = DateTime.Parse(value); }
}
[XmlIgnore]
public Nullable<System.DateTime> CreateTime { get; set; }

困扰2:int类型xml不能为空  比如

<CreateBy></CreateBy>

为空 直接报错:输入字符串的格式不正确。

所以要把

public int CreateBy { get; set; }

写成:

        [XmlElement("CreateBy")]
public string CreateByStr
{
get { return CreateBy.ToString(); }
set { if (value == "") CreateBy = ; else CreateBy = Convert.ToInt32(value); }
}
[XmlIgnore]
public int CreateBy { get; set; }

c#XML转换成实体的更多相关文章

  1. C# 将DataTable数据源转换成实体类

    using System; using System.Collections.Generic; using System.Data; using System.Reflection; /// < ...

  2. Dom4j把xml转换成Map(固定格式)

    /** * 可解析list * * @param fileName * @return * @throws Exception */ @SuppressWarnings("unchecked ...

  3. Dom4j把xml转换成Map(非固定格式)

    将xml转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml.转换规则:1.主要是Map与List的互相嵌套2.同名称的节点会被装进List 示例: import java.util. ...

  4. 如何在ASP.NET中用C#将XML转换成JSON

    本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方式来 ...

  5. 字符串js编码转换成实体html编码的方法(防范XSS攻击)

    js代码在html页面中转换成实体html编码的方法一: <!DOCTYPE html><html> <head>    <title>js代码转换成实 ...

  6. 如何在ASP.NET中用C#将XML转换成JSON 【转】

      本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方 ...

  7. C#将XML转换成JSON转换XML

    原文:C#将XML转换成JSON转换XML using System; using System.Collections.Generic; using System.Linq; using Syste ...

  8. C# DataTable转换成实体列表 与 实体列表转换成DataTable

    /// <summary> /// DataTable转换成实体列表 /// </summary> /// <typeparam name="T"&g ...

  9. sql hibernate查询转换成实体或对应的VO Transformers

    sql查询转换成实体或对应的VO Transformers //addScalar("id") 默认查询出来的id是全部大写的(sql起别名也无效,所以使用.addScalar(& ...

随机推荐

  1. [转]$.post() 和 $.get() 如何同步请求

    原文地址:https://blog.csdn.net/sunnyzyq/article/details/78730894 由于$.post() 和 $.get() 默认是 异步请求,如果需要同步请求, ...

  2. vue-cli关闭eslint及配置eslint

    有了eslint的校验,可以来规范开发人员的代码,是挺好的.但是有些像缩进.空格.空白行之类的规范,在开发过程中一直报错,有点烦人了. 我们可以在创建工程的时候选择不要安装eslint.就是在安装工程 ...

  3. replay的意义

    数据库重放: () 在测试环境中重新创建实际的生产数据库工作量. () 在生产中实施更改之前,确定和分析潜在的不稳定性. () 捕获生产中的工作量:

  4. 05Hadoop-左外连接

    场景:有两张表,一张用户表(user),交易表(transactions).两张表的字段如下: 两份表数据做个左连接,查询出(商品名,地址)这种格式. 这样就是相当于交易表是左表,不管怎么样数据都要保 ...

  5. Linux 正则表达式_010

    Linux 正则表达式 标注:本教程只针对linux运维的三剑客命令awk,sed,grep正则表达式 什么是正则表达式? 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法通过定义的这 ...

  6. ubuntu anaconda opencv问题

    在ubuntu16.04上使用opencv3时, 发现视频与imshow函数无法使用,经查资料发现 安装opencv时采用的简易的安装方法,没有编译opencv的源码. 因此会出现以上问题. 下载源码 ...

  7. sklearn中随机森林的参数

    一:sklearn中决策树的参数: 1,criterion: ”gini” or “entropy”(default=”gini”)是计算属性的gini(基尼不纯度)还是entropy(信息增益),来 ...

  8. Android学习:ActionBar活动条

    菜单定义: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android=" ...

  9. nginx的https和http共存反向代理配置

    一.设置http反向代理: upstream ly.com { server ; server ; } upstream home.ly.com { server ; server ; } 对应增加: ...

  10. react 使用 lazyload 懒加载图片

    文档地址 index.html <script> (function(w, d) { var b = d.getElementsByTagName("body")[0] ...