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() 这种方法将会通过微信扫描二维码登录,但是这种登录的方 ...
随机推荐
- 记录下push推送优化改进点
一)自主研发的push服务的特点及优势: 1) 消息回执确认(ack); 2) 有效期推送(设置消息的有效期); 3) 精准推送(设置设备组别推送); 4) 下发任务分解(拆分任务,多进程); 5) ...
- postgresql on centos (sequelize+pg+nodejs):Failed to find PostgresSQL server.Pleast double check your settings
公司的一个项目,使用的nodejs做服务端,数据库是postgresql,在本地时一切ok,放在centos时,postgresql配置ok,可以远程访问,但是nodejs在centos启动时,就会报 ...
- 第1周---python网络爬虫规则
第一节:requests库入门 第二节:网络爬虫的"盗亦有道" 第三节:requests库的网络爬虫实例
- Laravel 的中大型专案架构
好文:http://oomusou.io/laravel/laravel-architecture/
- java随手记
javaagent可以hook字节码处理 java -javaagent:jebloader.jar -jar xxx.jar 结合javassist,可以动态替换方法内容 import java.i ...
- 46、PopWindow工具类
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...
- SonarQube 平台搭建
1. 前期准备 ① 环境 jdk 1.8 配置(见其他随笔) MySQL 5.7(见其他随笔) ② 工具下载 sonarqube 下载 <链接:https://pan.baidu.com/s/1 ...
- Balala Power!(大数+思维)
Balala Power! Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- 二、docker入门
docker入门 使用场景: 面向产品.面向开发.面向测试.面向运维.面向自动化.面向微服务.面向大规模的分布式架构(微信红包) 虚拟化解决方案: 商业解决方案: VMware vSphere,VMw ...
- EasyDSS流媒体服务器软件(支持RTMP/HLS/HTTP-FLV/视频点播/视频直播)-正式环境安装部署攻略
EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作. 其中,点播功能主要包含:上传.转码.分发.直播功能,主要包含:直播.录像, 直播支持RTMP ...