xml转换为对象 微信接口
public sealed class XMLSerilizable
{
/// <summary>
/// XML转换为对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xml"></param>
/// <returns></returns>
public static T XMLToObject<T>(string xml) where T : new()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlNode root = doc.FirstChild; Dictionary<string, object> table = new Dictionary<string, object>();
foreach (XmlNode v in root.ChildNodes)
{
table.Add(v.Name, GetValue(v));
} return DicToObject<T>(table); //new RequestText(table);
} /// <summary>
/// 字典类型转化为对象
/// </summary>
/// <param name="dic"></param>
/// <returns></returns>
private static T DicToObject<T>(Dictionary<string, object> dic) where T : new()
{
var md = new T();
DicToObject(md, dic);
return md;
} /// <summary>
/// Dictionary填充对象
/// </summary>
/// <param name="md"></param>
/// <param name="dic"></param>
private static void DicToObject(object md, System.Collections.IDictionary dic)
{
foreach (var filed in dic.Keys)
{
BindingFlags flag = BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance; try
{
var value = dic[filed]; if (value is System.Collections.IDictionary)
{
Type ct = md.GetType().GetProperty(filed + "", flag).PropertyType;
object o = Activator.CreateInstance(ct);
DicToObject(o, value as System.Collections.IDictionary);
md.GetType().GetProperty(filed + "", flag).SetValue(md, o, null);
}
else
md.GetType().GetProperty(filed + "", flag).SetValue(md, value, null);
}
catch (Exception e)
{ }
}
// return md;
} /// <summary>
/// 获得节点值
/// </summary>
/// <param name="node"></param>
/// <returns></returns>
private static object GetValue(XmlNode node)
{
if (node.HasChildNodes)
{
// <MsgType><![CDATA[text]]></MsgType> 这种结构 node.ChildNodes.Count==1
if (node.ChildNodes.Count == && node.ChildNodes[].NodeType != XmlNodeType.Element)
{
return node.InnerText;
}
else
{
Dictionary<string, object> table = new Dictionary<string, object>();
foreach (XmlNode n in node.ChildNodes)
{
table.Add(n.Name, GetValue(n));
}
return table;
}
}
return node.InnerText;
} }
xml转换为对象 微信接口的更多相关文章
- XML转换为对象操作类详解
//XML转换为对象操作类 //一,XML与Object转换类 using System.IO; using System.Runtime.Serialization.Formatters.Binar ...
- XML转换为对象/Javabean
將XML轉換為對象 /** * xml转换成JavaBean * @param xml * @param c * @return */ public static <T> T conver ...
- ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题
原文:ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/MrTra ...
- C#开发微信门户及应用(42)--使用Autofac实现微信接口处理的控制反转处理
在很多情况下,我们利用IOC控制反转可以很方便实现一些接口的适配处理,可以在需要的时候切换不同的接口实现,使用这种方式在调用的时候,只需要知道相应的接口接口,具体调用哪个实现类,可以在配置文件中动态指 ...
- dom4j微信接口开发
新建一个web项目,我用的是eclipse和tomcat7.0 ,外网环境用的nat123 先建立一个实体bean:TextMessage /** * xml基本对象 * @author xiaohu ...
- XML转换为Map通用算法实现 Java版本(Stax实现)
目前项目中需要将XML转换为Map,下面给出了自己的代码实现. 后续将为大家提供Dom版本的实现. 请各路大神给予各种优良实现. 场景: 在项目中需要解析XML文本字符串,需要将XML文本字符串映射为 ...
- Django:之中间件、微信接口和单元测试
Django中间件 我们从浏览器发出一个请求 Request,得到一个响应后的内容 HttpResponse ,这个请求传递到 Django的过程如下: 也就是说,每一个请求都是先通过中间件中的 pr ...
- python实现微信接口(itchat)
python实现微信接口(itchat) 安装 sudo pip install itchat 登录 itchat.auto_login() 这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实 ...
- python实现微信接口——itchat模块
python实现微信接口——itchat模块 安装 sudo pip install itchat 登录 itchat.auto_login() 这种方法将会通过微信扫描二维码登录,但是这种登录的方 ...
随机推荐
- IOS设计模式浅析之建造者模式(Builder)
定义 "将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现". 最初的定义出现于<设计模式>(Addison-Wesley,1994). 看这个概 ...
- 手游后台PVP系统网络同步方案总结
游戏程序 平台类型: 程序设计: 编程语言: 引擎/SDK: 概述 PVP系统俨然成为现在新手游的上线标配,手游Pvp系统体验是否优秀,很大程度上决定了游戏的品质.从最近半年上线的新手 ...
- 学习spring2--跟我一起学Spring 3(3)–使用Spring开发第一个HelloWorld应用
http://www.importnew.com/13246.html 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 - 首页 所有文章 资讯 ...
- 离散数学及其应用(Discrete Mathematica With Application 7th)学习笔记 第一章
目前本人只进行到了第五章的章末补充练习,应该是从4月6号开始学习的,又是英文版,而且基本就下班回家抽2个小时左右去学,所以进度较慢. 由于本质是数学,除了一些程序处理和大计算量的问题,基本上一本草稿本 ...
- 第一百八十六节,jQuery,验证表单插件,Ajax 表单插件,验证和提交表单
jQuery,验证表单插件,Ajax 表单插件,验证和提交表单 HTML <form id="reg" method="post" action=&quo ...
- python 自动化之路 day 19 Django基础[二]
Django - 路由系统 url.py - 视图函数 views.py - 数据库操作 models.py - 模板引擎渲染 - HttpReponse(字符串) - render(request, ...
- poj 2117(割点的应用)
题目链接:http://poj.org/problem?id=2117 思路:题目的意思是要求对于给定的无向图,删除某个顶点后,求最大的连通分量数.显然我们只有删掉割点后,连通分支数才会增加,因此我们 ...
- Unity3d NGUI UICheckbox
单选按钮: 一,常用属性: 1,CheckSprite:选中后,才显示的Sprite,即为“选中”状态; 2,Starts Checked:true,一开始就显示“选中”状态; 3,RadioButt ...
- 1674 区间的价值 V2(分治)
1674 区间的价值 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 lyk拥有一个区间. 它规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有 ...
- B - Catch That Cow (抓牛)
B - Catch That Cow Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u ...