c# 实现数据实体类转xml 辅助方法类

编程开发
73
xml转Entity
帮助类

新实现传送门=> C#实现实体类和XML文件转换

以下代码相较于上方的方法的实用参考价值相对较低 建议前往上方链接查看新的方式

/// 
/// XML实体映射处理类
///

/// 不支持多层嵌套类型
public sealed class XmlHelper : EntityFeatures where T : new()
{
List PropertyFeaturesSet
{
get
{
return this.ColumnFeaturesSet();
}
}

TableAttribute XmlRoot
{
get
{
return this.TableFeatures();
}
}

///
/// 保存为xml文件
///

/// xml文件地址
///
public bool Save(string XmlUri, T DataModel)
{
if (string.IsNullOrEmpty(XmlRoot.Name) || PropertyFeaturesSet.Count <= 0) return false;
XElement Root = new XElement(XmlRoot.Name);
Root.SetAttributeValue("Title", XmlRoot.Title);

XDocument EntityXML = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), Root);///创建一个
PropertyFeaturesSet.ForEach(data =>
{
XElement element = new XElement(data.Property.Name, data.PropertyValue(DataModel));
element.SetAttributeValue("Title", data.Title);
EntityXML.Root.Add(element);
});

EntityXML.Save(XmlUri);
return true;
}

///
/// 读取xml文件转换为泛型
///

/// xml文件地址
///
public T Read(string XmlUri)
{
if (string.IsNullOrEmpty(XmlRoot.Name) || PropertyFeaturesSet.Count <= 0) return default(T);

using (FileStream fs = new FileStream(XmlUri, FileMode.Open, FileAccess.Read))
{
XmlDocument EntityXML = new XmlDocument();///创建一个
EntityXML.Load(fs);

T TEntity = new T();
foreach (XmlNode node in EntityXML.SelectSingleNode("/" + XmlRoot.Name))
{
Type FeaturesType = typeof(T);
PropertyInfo[] pArray = FeaturesType.GetProperties();
foreach (PropertyInfo p in pArray)
{
PropertyFeaturesSet.SingleOrDefault(data =>
{
if (p.Name != data.Property?.Name || !p.CanWrite || !node.Name.Equals(data.Property.Name)) return false;
if (string.IsNullOrEmpty(node.InnerText)) return false;
object value = node.InnerText;
if (FutureToolkits.MSSQL.DataConverter.PropertyTypeIsNullable(p))///判断是不是null类型
{
value = Convert.ChangeType(value, p.PropertyType.GetGenericArguments().SingleOrDefault());
}
p.SetValue(TEntity, value, null); return true;
});
}
}
fs.Close();
fs.Dispose();
return TEntity;
}
}
}



使用FileUpload服务器端控件上传文件
c#通过winAPI函数InternetGetConnectedState获得本地系统的网络连接状态
bootstrap 控制标签元素d-none/d-block在不同尺寸的设备中的作用
PDF文件流接口弹出下载提示不是直接预览的解决办法
 jquery实现AJAX 表单的同时上传文件
JQuery 对标签标签内容几种常见的操作例子
WPF开发样式文件的四种引用方式
多图生成GIF动态图
 在windows环境下安装redis过程 - 其实挺简单
Microsoft.EntityFrameworkCore 代码配置数据库
使用AJAX请求报错 此请求已被阻止
 C# 实现连接Orcle数据库 无需安装客户端
暂无相关内容...
visual studio 2019在线安装包和激活码密钥key
 远程控制软件Radmin3.4 中文完整版(控制端和被控端)
C#基于ffmpeg.exe实现视频添加字幕转GIF表情包的源码
基于WPF实现系统桌面录制gif+批量添加水印工具源码
基于Wpf+MVVM实现的完整截图软件的框选区域效果源码
暂无章节内容...
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删