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,如果相等,给这个实体类中的参数赋值。

 

第一次写博客,希望大家多多支持。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM