C#.NET XML 与 实体 MODEL 互转,非序列化
2024-08-31 16:30:54
只能处理简单结构XML 和 实体。
using System.Text;
using System.Xml; namespace A.Util
{
public static class MyXmlUtil
{
public static string ModelToXml<T>(T a ,string xmlRootName)
{
StringBuilder scXml = new StringBuilder();
scXml.AppendFormat("<{0}>", xmlRootName); #region 主体
System.Reflection.PropertyInfo[] cfgItemProperties = a.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); foreach (System.Reflection.PropertyInfo item in cfgItemProperties)
{
string name = item.Name;
object value = item.GetValue(a, null);
//string 或 值属性,且value 不为 null
if ((item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String")) && value != null && !string.IsNullOrEmpty(value.ToString()))
{
scXml.AppendFormat("<{0}>{1}</{0}>", name, value.ToString());
}
} #endregion scXml.AppendFormat("</{0}>", xmlRootName); string xml = scXml.ToString(); return xml;
} public static void XmlToModel<T>(T a,string xmlContent, string xmlRootName)
{
xmlContent = xmlContent.Trim(); //去除XML HEADER,否则LoadXml 时出错
if (xmlContent.Contains("<?"))
{
int bb = xmlContent.IndexOf('>');
xmlContent = xmlContent.Substring(bb + );
} XmlDocument xmlDoc = new XmlDocument();
xmlDoc.XmlResolver = null;//2018-12-3
xmlDoc.LoadXml(xmlContent);
XmlNode root = xmlDoc.SelectSingleNode(xmlRootName);
XmlNodeList xnl = root.ChildNodes; System.Reflection.PropertyInfo[] cfgItemProperties = a.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); foreach (XmlNode xnf in xnl)
{
//xnf.Name, xnf.InnerText
if (string.IsNullOrEmpty(xnf.InnerText))
{
continue;
} #region 主体 foreach (System.Reflection.PropertyInfo item in cfgItemProperties)
{
string name = item.Name;
//string 或 值属性
if ( item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String") )
{
if (item.Name == xnf.Name )
{
item.SetValue(a, xnf.InnerText, null);
}
}
} #endregion
} }
}
}
--
使用
VersChkHttpRsp vchrsp = new VersChkHttpRsp();
MyXmlUtil.XmlToModel<VersChkHttpRsp>(vchrsp, rspXml, "xml");
-
最新文章
- 【BZOJ 3876】【AHOI 2014】支线剧情
- SQL Server帐号孤立的问题解决
- Entity Framework 实体框架的形成之旅--几种数据库操作的代码介绍(9)
- sql2005镜像实现
- Mac下如何显示隐藏文件/文件夹_百度经验
- java的版本区别、下载、配置
- File类与FileInfo类
- 用pl/sql游标实现约瑟夫环
- 再起航,我的学习笔记之JavaScript设计模式22(访问者模式)
- Day71Django基础
- 【公众号系列】SAP S/4 HANA 1809请查收
- UDP协议
- Docker 管理工具 Portainer部署
- HTML5的DeviceOrientation实现微信摇一摇功能
- JPA学习
- VS2010如何生成ActiveX控件测试容器
- Getting in Line UVA 216
- 简单ORM工具的设计和编写,自己项目中曾经用过的
- Oracle数据库中的优化方案
- WebADI_WebADI工作日志设定(案例)