简体   繁体   English

如何在C#中反序列化XML?

[英]How to Deserialize xml in c#?

How to Deserialize below xml return to variable in c#? 如何在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>

Usually it's a good idea to check out official documentation . 通常,检查官方文档是个好主意。

If you get a class for this xml you can use this tool or using this visual studio functionality 如果获得此xml的类,则可以使用此工具或使用Visual Studio功能

Also this xml will not parse, you are using strange apostrophes in the trans_name line 同样,此xml无法解析,您在trans_name行中使用了奇怪的撇号

Use xml linq : 使用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();

        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM