首选:我的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. find ctime 加减n时间范围

    看下atime的时间解释:-atime n File was last accessed n*24 hours ago. When find figures out how many 24-hour ...

  2. bash计算上下行数据差值

    for i in {1..60000}; do echo "`date +'%F %T'` `df /dev/md0 | grep 'data1'` "; sleep 1; don ...

  3. Altium Designer学习---如何进行SI仿真

    Altium designer 如何进行SI仿真. 1.仿真电路中需要至少一块集成电路: 2.器件的IBIS模型: 3.在规则中必须设定电源网络和地网络: 4.建立SI规则约束: 5.层堆栈必须设置正 ...

  4. 用WordPress建立专业网站教程 (一步步建站, 一步也不少)

    最新美国域名中心US Domain Center: http://www.usdomaincenter.com/ 建站教程 (10分钟上线, 无需备案): https://www.qiyewp.com ...

  5. .net framework 项目 build 出现 未能加载文件或程序集“netfx.force.conflicts”或它的某一个依赖项

    问题描述 Severity Code Description Project File Line Suppression State Error 未能加载文件或程序集"netfx.force ...

  6. JS 浅谈函数柯里化,不明觉厉

    在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术.这个技术由 Christopher ...

  7. 深度解剖session运行原理

    已经大半年没有更新博客了,一方面有比博客更重要的事情要做,另外一方面也没有时间来整理知识,所以希望在接下来的日子里面能够多多的写博客来与大家交流 什么是session session的官方定义是:Se ...

  8. 【Python】安装error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"

    pip install Scrapy --> error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft ...

  9. Webservice学习之WSDL详解

    1. <definitions/> 这部分在基础篇里已经介绍,主要说明引用了哪些schema以及schema的位置等,可以看下基础篇的介绍,SayHello的Demo这部分内容如下: &l ...

  10. react Context

    import React, { useState, useEffect, useContext } from "react"; import axios from "ax ...