首选:我的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. 明天软软onsite

    现在在飞机上,还有1.5小时到达.买了网络包,速度不错.今年上半年第三次飞西雅图,过几天也许还有第四次... 今天群主FB加面系统设计非常顺利,祝他拿到大包裹,也希望拿到以后发大红包,这回我一定不能错 ...

  2. C语言 goto语句

    /* goto语句 */ #include <stdio.h> #include <stdlib.h> #include <string.h> /* goto语句也 ...

  3. Linux 相关术语_002

    Linux(Linux is not unix)是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统. 它能运行主要的UNIX工 ...

  4. PXE(preboot execution environment):【网络】预启动执行环节:引导 live光盘 ubuntu livecd 18.04+:成功

    比较艰难的成功了. 艰难在于:吱吱吱吱(知知知知知):就是歌init启动参数而已! 最最艰难在于:这个nfs服务器软件有很大的关系.很多时候不是你不行,而是条件不具备 or 条件看似具备但其实有问题 ...

  5. geoserver 图层样式

    1.Styled Layer Descriptor 标准描述了稳当的结构合使用规则.一个文档包含了符号定义和绘制规则,那么这个文档就叫做Styled Layer Desciptor(SLD)样式,它是 ...

  6. is not in the sudoers file解决方法

    用sudo时提示"xxx is not in the sudoers file. This incident will be reported.其中XXX是你的用户名,也就是你的用户名没有权 ...

  7. Debian/Ubuntu pip default install to $HOME/.local

    pip default install to $HOME/.local on Debian/Ubuntu After pip 8.1.1-2 on Debian or Ubuntu you can p ...

  8. 利用Python半自动化生成Nessus报告

    0x01 前言 Nessus是一个功能强大而又易于使用的远程安全扫描器,Nessus对个人用户是免费的,只需要在官方网站上填邮箱,立马就能收到注册号了,对应商业用户是收费的.当然,个人用户是有16个I ...

  9. go关键字之struct定义声明方式

    type Student struct{ name string age int } var stu Student stu.name,stu.age = "张三”,10 stu2 := S ...

  10. Golang 发送和接收数据公共类

    package RequestCenter import ( "bytes" "io" "net" "runtime" ...