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

-

C#.NET XML 与 实体 MODEL 互转,非序列化的更多相关文章

  1. C# 不是序列化xml 转实体Model【原家独创】

    public static T XmlConvertModel<T>(string xmlStr) where T : class, new()        {            T ...

  2. 微信支付的JAVA SDK存在漏洞,可导致商家服务器被入侵(绕过支付)XML外部实体注入防护

    XML外部实体注入 例: InputStream is = Test01.class.getClassLoader().getResourceAsStream("evil.xml" ...

  3. XML与 实体的相互转化

    using System; using System.Linq; using System.Xml; using System.Reflection; using System.Data; using ...

  4. c# XML和实体类之间相互转换(序列化和反序列化)[砖]

    link: http://blog.okbase.net/haobao/archive/62.html by: 好饱 我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlU ...

  5. C# XML和实体类之间相互转换(序列化和反序列化)

    我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. using System; using System.Collections.Ge ...

  6. XML和对象属性互转的基类

    本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对 ...

  7. 利用MyEclipse连接数据库并自动生成基于注解或者XML的实体类

    一.利用MyEclipse连接数据库 1. 打开MyEclipse的数据库连接视图 然后在Other中找到"MyEclipse Database"中的DB Browser 2. 在 ...

  8. XML外部实体注入漏洞(XXE)

    转自腾讯安全应急响应中心 一.XML基础知识 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声 ...

  9. XML和实体类之间相互转换(序列化和反序列化)

    我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

随机推荐

  1. Windows Automation API和自动化测试

    https://zhuanlan.zhihu.com/p/22083601\ 感谢轮子哥点赞,这会儿消息扎堆过来了,轮带逛果然不是随便说说的…… 第二篇一个简单的Windows Automation ...

  2. Generative Adversarial Networks overview(3)

    Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章主要介绍Gan的应用篇,3,主要介绍图像应用,4, 主要介绍文本以及医药化学其他领域应用 原理篇请看 ...

  3. day001-在Windows下python环境的搭建

    一.Python下载 1.Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到: 2.Python官网:https://www.python.org/ 3.你可以在以下链接中下载 ...

  4. /bin/bash^M: bad interpreter

    (1)使用linux命令dos2unix filename,直接把文件转换为unix格式: (2)使用sed命令sed -i "s/\r//" filename 或者 sed -i ...

  5. call JSON.parse JSON.stringify typeof 的使用及严格模式this的使用

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. Centos7 Nginx安装使用

    一.Nginx简介 1.什么是nginx Nginx是一款使用C语言开发的高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev ...

  7. 声源定位之2精读《sound localization based on phase difference enhancement using deep neuarl networks》

    2.1.1 题目与摘要 1.为什么要增强IPD? The phase differences between the discrete Fourier transform (DFT) coeffici ...

  8. 范仁义html+css课程---9、video、audio、canvas和svg元素略讲

    范仁义html+css课程---9.video.audio.canvas和svg元素略讲 一.总结 一句话总结: video:HTML5视频标签. audio:html5音频标签. canvas:绘制 ...

  9. Unity移动端入门 - Android那些事

    目录 大小1.92GB,ts格式,语言:中文 扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com/ 联系店主

  10. SpringBoot——Profile多环境支持

    1.多profile文件形式 主配置文件编写时, 文件名可以是application-{profile}.properties/yml 默认使用的application.properties的配置. ...