只能处理简单结构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");

-

最新文章

  1. 【BZOJ 3876】【AHOI 2014】支线剧情
  2. SQL Server帐号孤立的问题解决
  3. Entity Framework 实体框架的形成之旅--几种数据库操作的代码介绍(9)
  4. sql2005镜像实现
  5. Mac下如何显示隐藏文件/文件夹_百度经验
  6. java的版本区别、下载、配置
  7. File类与FileInfo类
  8. 用pl/sql游标实现约瑟夫环
  9. 再起航,我的学习笔记之JavaScript设计模式22(访问者模式)
  10. Day71Django基础
  11. 【公众号系列】SAP S/4 HANA 1809请查收
  12. UDP协议
  13. Docker 管理工具 Portainer部署
  14. HTML5的DeviceOrientation实现微信摇一摇功能
  15. JPA学习
  16. VS2010如何生成ActiveX控件测试容器
  17. Getting in Line UVA 216
  18. 简单ORM工具的设计和编写,自己项目中曾经用过的
  19. Oracle数据库中的优化方案
  20. WebADI_WebADI工作日志设定(案例)

热门文章

  1. Spring Boot 中集成 Redis 作为数据缓存
  2. java去除字符串中的特殊符号或指定的字符
  3. React 顶层 API
  4. HDU6704 K-th occurrence
  5. JavaScript基础12——运动
  6. 关于单片机的RAM
  7. 【JZOJ5551】【20190625】旅途
  8. 洛谷1169 [ZJOI2007] 棋盘制作
  9. js浮点数精度丢失问题及如何解决js中浮点数计算不精准
  10. Xshell远程登录