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(& ...
随机推荐
- 明天软软onsite
现在在飞机上,还有1.5小时到达.买了网络包,速度不错.今年上半年第三次飞西雅图,过几天也许还有第四次... 今天群主FB加面系统设计非常顺利,祝他拿到大包裹,也希望拿到以后发大红包,这回我一定不能错 ...
- C语言 goto语句
/* goto语句 */ #include <stdio.h> #include <stdlib.h> #include <string.h> /* goto语句也 ...
- Linux 相关术语_002
Linux(Linux is not unix)是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统. 它能运行主要的UNIX工 ...
- PXE(preboot execution environment):【网络】预启动执行环节:引导 live光盘 ubuntu livecd 18.04+:成功
比较艰难的成功了. 艰难在于:吱吱吱吱(知知知知知):就是歌init启动参数而已! 最最艰难在于:这个nfs服务器软件有很大的关系.很多时候不是你不行,而是条件不具备 or 条件看似具备但其实有问题 ...
- geoserver 图层样式
1.Styled Layer Descriptor 标准描述了稳当的结构合使用规则.一个文档包含了符号定义和绘制规则,那么这个文档就叫做Styled Layer Desciptor(SLD)样式,它是 ...
- is not in the sudoers file解决方法
用sudo时提示"xxx is not in the sudoers file. This incident will be reported.其中XXX是你的用户名,也就是你的用户名没有权 ...
- 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 ...
- 利用Python半自动化生成Nessus报告
0x01 前言 Nessus是一个功能强大而又易于使用的远程安全扫描器,Nessus对个人用户是免费的,只需要在官方网站上填邮箱,立马就能收到注册号了,对应商业用户是收费的.当然,个人用户是有16个I ...
- go关键字之struct定义声明方式
type Student struct{ name string age int } var stu Student stu.name,stu.age = "张三”,10 stu2 := S ...
- Golang 发送和接收数据公共类
package RequestCenter import ( "bytes" "io" "net" "runtime" ...