c# - 如何在 C# 中反序列化 xml?
问题描述
如何反序列化下面的xml返回到c#中的变量?
<?xmlversion="1.0"encoding="UTF-8"?>
<alipay>
<is_success>T</is_success>
<request>
<param name="_input_charset">UTF-8</param>
<param name="currency">USD</param>
<param name="buyer_identity_code">2013112012345678</param>
<param name="identity_code_type">qrcode</param>
<param name="mcc">4021</param>
<param name="extend_info">{"licence":"123",name=”LG”}</param>
<param name="partner_trans_id">2010121000000002</param>
<param name="partner">2088102012343978</param>
<param name="password">SJV88po0XvIptqWGM4rxP5EQ</param>
<param name="memo">shopping</param>
<param name="service">alipay.acquire.overseas.pay</param>
<param name="sign">22904adafb1806178b410d2d5c9c02a3</param>
<param name="sign_type">MD5</param>
<param name=“trans_name”>Belkin wrist type</param>
<param name="trans_amount">39.25</param>
<param name="trans_create_time">20131120153059</param>
</request>
<response>
<alipay>
<alipay_trans_id>2011091703338463</alipay_trans_id>
<partner_trans_id>201311221000000002</partner_trans_id>
<alipay_buyer_login_id>cao***@126.com</alipay_buyer_login_id>
<alipay_buyer_user_id>2088102130896433</alipay_buyer_user_id>
<alipay_pay_time>20131120155823</alipay_pay_time>
<exchange_rate>6.0939</exchange_rate>
<trans_amount>39.25</trans_amount>
<trans_amount_CNY>239.19</trans_amount_CNY>
<result_code>SUCCESS</result_code>
</alipay>
</response>
<sign>6fb8a322f15cfd0fcfe65301b10f6994</sign>
<sign_type>MD5</sign_type>
</alipay>
解决方案
使用 xml linq :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;
namespace ConsoleApplication62
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
string xml = File.ReadAllText(FILENAME);
XDocument doc = XDocument.Parse(xml);
var results = doc.Descendants("response").FirstOrDefault().Elements("alipay").Select(x => new
{
alipay_trans_id = (string)x.Element("alipay_trans_id"),
partner_trans_id = (string)x.Element("partner_trans_id"),
alipay_buyer_login_id = (string)x.Element("alipay_buyer_login_id"),
alipay_buyer_user_id = (string)x.Element("alipay_buyer_user_id"),
alipay_pay_time = (string)x.Element("alipay_pay_time"),
exchange_rate = (decimal)x.Element("exchange_rate"),
trans_amount = (decimal)x.Element("trans_amount"),
trans_amopunt_CNY = (decimal)x.Element("alipay_trans_id"),
result_code = (string)x.Element("result_code")
}).FirstOrDefault();
}
}
}
推荐阅读
- wagtail - wagtil中的slugurl和pageurl有什么区别
- scala - 未找到配置键:类型安全的 ConfigFactory.load 在哪里查找 Scala 多项目中的配置文件?
- javascript - AWS Lambda - 如何处理函数中的请求处理顺序
- vb.net - 两次打开颜色对话框?
- spring-cloud-stream - Spring Cloud Stream融合模式注册表不起作用
- python - 如何在 Tkinter 的另一个框架内添加一个框架?
- konvajs - 绘制矩形不能遮蔽我的图像
- web-services - Spring 集成 web 服务 jms
- sql - 获取表中下一行的值总和
- java - Java 8:如何转换列表