c#XML转换成实体
首选:我的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转换成实体的更多相关文章
- C# 将DataTable数据源转换成实体类
using System; using System.Collections.Generic; using System.Data; using System.Reflection; /// < ...
- Dom4j把xml转换成Map(固定格式)
/** * 可解析list * * @param fileName * @return * @throws Exception */ @SuppressWarnings("unchecked ...
- Dom4j把xml转换成Map(非固定格式)
将xml转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml.转换规则:1.主要是Map与List的互相嵌套2.同名称的节点会被装进List 示例: import java.util. ...
- 如何在ASP.NET中用C#将XML转换成JSON
本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方式来 ...
- 字符串js编码转换成实体html编码的方法(防范XSS攻击)
js代码在html页面中转换成实体html编码的方法一: <!DOCTYPE html><html> <head> <title>js代码转换成实 ...
- 如何在ASP.NET中用C#将XML转换成JSON 【转】
本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方 ...
- C#将XML转换成JSON转换XML
原文:C#将XML转换成JSON转换XML using System; using System.Collections.Generic; using System.Linq; using Syste ...
- C# DataTable转换成实体列表 与 实体列表转换成DataTable
/// <summary> /// DataTable转换成实体列表 /// </summary> /// <typeparam name="T"&g ...
- sql hibernate查询转换成实体或对应的VO Transformers
sql查询转换成实体或对应的VO Transformers //addScalar("id") 默认查询出来的id是全部大写的(sql起别名也无效,所以使用.addScalar(& ...
随机推荐
- nlp资料网站
原文地址 http://blog.sina.com.cn/s/blog_574a437f01019poo.html 昨天实验室一位刚进组的同学发邮件来问我如何查找学术论文,这让我想起自己刚读研究生时茫 ...
- 针对json的查询--alibaba的开源项目jsonq
项目地址: https://github.com/alibaba/jsonq 示例json { , , "test": "Hello, world!", &qu ...
- yii2快速導出phpexcel
https://packagist.org/packages/moonlandsoft/yii2-phpexcel 安装方式:首先是已经安装过Composer,则通过 Composer 下载安装 Mo ...
- oneNote2016代码高亮插件
下载地址:https://github.com/elvirbrk/NoteHighlight2016/releases 安装插件前必须安装oneNote笔记. NoteHighlight插件有32位和 ...
- 使用100%面向过程的思维方式来写java程序
1.java是强制写class关键字的语言,不能有独立的函数游离在类外出现在文件中,这和python c++ 都不同,后面的都可以单独在类外写函数,所以java被称为是纯面向对象的语言,py和c++都 ...
- mvc 控制器忽略某些方法
需求:登录信息验证,需要忽略登录注册这些接口的验证,通过给方法加忽略过滤器实现 1.需要忽略的方法加[IgnoreLoginFilter] 2.定义忽略过滤器 public class IgnoreL ...
- 单行显示三级分销记录(同表自join)
1)首先是一个简单的三级分销(邀请与被邀请),表结构是酱紫的 CREATE TABLE `d_user_invite` ( `invite_id` ) NOT NULL AUTO_INCREMENT, ...
- C# 如何通过mailto标签和SMTP协议两种方式发送邮件
本文主要讲解如何通过如现mailto标签和SMTP协议两种方式发送邮件,下面就直入主题 方法一.通过mailto标签发送邮件 通过mailto不是正真意义上的发送邮件,它只是会自动调用我们本地默认的邮 ...
- kylin 使用RESTful API 请求
目前根据Kylin的官方文档介绍,Kylin的认证是basic authentication,加密算法是Base64,在POST的header进行用户认证我使用的用户和密码是(格式:username: ...
- nw.js---创建一个hello word的方法
一.如果用nw.js 来开发桌面应用 首先到Nw.js中文网下载软件: https://nwjs.org.cn/download.html 下载下来进行解压就可以了,绿色的免安装的,整个目录结果是这样 ...