XML带多属性解析为一个实体类(利用反射)
最近在对接一个银行的项目,大概就是类似一个钱包的功能,在请求返回的数据时,发现返回的数据标准的XML格式的支付串,格式如下
<kColl id="inputOrig" append="false">
<field id="currency" value="RMB" append="false"/><field id="amount" value="0.01" append="false"/>
<field id="masterId" value="2000311146" append="false"/>
<field id="objectName" value="订单汇支付" append="false"/>
<field id="orderId" value="20003111462016092317091311" append="false"/>
<field id="paydate" value="20160923170913" append="false"/>
<field id="remark" value="订单汇支付" append="false"/>
<field id="validtime" value="120" append="false"/>
</kColl>
用常规的XML解析解析出来的数据是一个List,不能达到预期的目的,于是想到使用反射来解决这个问题。
代码如下:
/// <summary>
/// 支付结果解析
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="parm"></param>
/// <param name="orig"></param>
/// <returns></returns>
public static T XMLParsing<T>(T parm, string orig)
{
Type t = parm.GetType();
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(orig);
foreach (XmlElement book in xmlDocument.SelectNodes(@"kColl/field"))
{
foreach (PropertyInfo pi in t.GetProperties())
{
if (pi.Name.ToLower() == book.GetAttribute("id").ToLower())
{
pi.SetValue(parm, book.GetAttribute("value"), null);
}
}
}
return parm;
}
orig为原始XML字符串,格式如上,用反射来判断实体类中的参数名是否等于XML field节点中的id,如果相等,给这个实体类中的参数赋值。
第一次写博客,希望大家多多支持。
XML带多属性解析为一个实体类(利用反射)的更多相关文章
- 通过数据库中的表,使用 MyEclipse2017的反向生成工具-->hibernate反转引擎引擎(MyEclipse2017自带的插件) 来反转生成实体类和对应的映射文件
通过数据库中的表,使用 MyEclipse2017的反向生成工具-->hibernate反转引擎引擎(MyEclipse2017自带的插件) 来反转生成实体类和对应的映射文件 文章目录 Ja ...
- XML和对象属性互转的基类
本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对 ...
- Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...
- OrmLite动态创建表,一个实体类创建多张表的的偏招
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/LonelyRoamer/article/details/26299355 在做一个Android的项 ...
- Activity设置全屏显示的两种方式及系统自带theme属性解析
转载说明:原贴地址:http://blog.csdn.net/a_running_wolf/article/details/50480386 设置Activity隐藏标题栏.设置Activity全屏显 ...
- xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil
若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...
- org.hibernate.MappingException: entity class not found hbm可以解析,但是实体类不能解析
在hbm.xml中给实体类加上包 com.we.lkl.studentVO
- mybatis向数据库插入数据 (传入的是一个实体类)
/** * 插入用户信息 user为实体类 * @param user */ public int insert( User user); //实体类不用@param标注 //mybatis的xml文 ...
- SpringBoot 使用逆向工程 构建Mapper.xml Dao层(持久层) 实体类
逆向工程 注: 有数据库表即可 第一步为创建数据库表 (可选)使用PowerDesigner设计数据库表,物理模型构建 添加pom.xml 逆向工程生成代码插件 <!--plugin 逆向工程生 ...
随机推荐
- pageX、clientX、screenX、offsetX、layerX、x
参考:http://www.cnblogs.com/xesam/archive/2011/12/08/2280509.html chrome: e.pageX--相对整个页面的坐标e.layerX-- ...
- webpack使用的心得
1 . 我们需要使用打包工具,首先第一步就得 执行 npm install进行安装,可是很多时候 加载速度很慢,这个时候我们可以 用淘宝镜像源,参考地址: p.p1 { margin: 0.0px 0 ...
- centos环境搭建
1.php -v 与phpinfo(); 不符,查看centos是否有自带的php:更改centos环境变量 /etc/profile,source /etc/profile生效: 2.pecl ...
- js 查找树节点 数组去重
//查找树节点function findData(curOrg, id) { var array = []; if ((typeof curOrg == 'object') && (c ...
- iOS优秀博客收录
原文链接:http://ju.outofmemory.cn/entry/105297 唐巧 王巍 破船之家 NSHipster Limboy 无网不剩 念茜的博客 Xcode Dev Ted's Ho ...
- iOS多线程-RunLoop简介
什么是RunLoop? 从字面上来看是运行循环的意思. 内部就是一个do{}while循环,在这个循环里内部不断的处理各种任务(比如:source/timer/Observer) RunLoop的存在 ...
- Timequest静态时序分析(STA)基础
Setup Slack Hold Slack Recovery&Removal Recovery: The minimum time an asynchronous signal must b ...
- calendar的一些操作
一.通过分析日期函数,根据日期进行一系列操作,例如:我们需要知道2个时间段中所有的日期等等. 由于Calendar 类是一个抽象类,因此我们不能通过new来获取该对象的实例.我们可以通过其类方法 ge ...
- Maven pom.xml 元素配置说明(一)
部分来源: Maven中 dependencies 节点和 dependencyManagement 节点的区别 dependencies与dependencyManagement的区别 maven ...
- Hadoop学习记录
http://blog.csdn.net/m_star_jy_sy/article/details/26476907配置windows里eclipse连接hadoop集群 hadoop常见命令 启动H ...