簡體   English   中英

我如何在C#中將xml響應插入類對象

[英]how can i insert xml response to class object in c#

我正在一個項目中工作,該代碼將數據發布到付款集成url,並且我收到的響應為xml字符串格式,我想將該響應字符串插入類對象中,以便可以使用它來顯示用戶

我無法在代碼中輸入示例值,因為我無法共享原始信息。

我得到以下格式的響應字符串:

<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n
<REFUND>
    <MERCHANTID>123</MERCHANTID>
    <TRANSACTIONID>100045448545</TXNID>
    <AMOUNT>100.00</AMOUNT>
    <STATUSCODE>M5</STATUSCODE>
    <STATUSMESSAGE>Invalid transaction date</STATUSMESSAGE>
    <REFUNDID>NA</REFUNDID>
</REFUND>

我正在使用此代碼:

using (var client = new HttpClient())
{
    var values = new List<KeyValuePair<string, string>>();

    values.Add(new KeyValuePair<string, string>("merchantid", "123"));
    values.Add(new KeyValuePair<string, string>("pwd", "hjcjsjjcj="));
    values.Add(new KeyValuePair<string, string>("transactionid", "1000046558989"));
    values.Add(new KeyValuePair<string, string>("refundamt", "100.00"));
    values.Add(new KeyValuePair<string, string>("transactiondate", DateTime.Today.ToString("yyyy-MM-dd")));
    values.Add(new KeyValuePair<string, string>("refundreferance", "25631"));

    var content = new FormUrlEncodedContent(values);

    var response = await client.PostAsync("payment url", content);

    var responseString = await response.Content.ReadAsStringAsync();

    var xmlSer = new XmlSerializer(typeof(REFUND), new XmlRootAttribute("REFUND"));
    var stringReader = new StringReader(responseString);
    var reader = xmlSer.Deserialize(stringReader);
    return RedirectToAction("View", reader);
}

這是我要在其中插入響應的類:

[Serializable()]
public class REFUNDVW
{
        [System.Xml.Serialization.XmlElement("MERCHANTID")]
        public string MERCHANTID { get; set; }

        [System.Xml.Serialization.XmlElement("TRANSACTIONID")]
        public string TXNID { get; set; }

        [System.Xml.Serialization.XmlElement("AMOUNT")]
        public string AMOUNT { get; set; }

        [System.Xml.Serialization.XmlElement("STATUSCODE")]
        public string STATUSCODE { get; set; }

        [System.Xml.Serialization.XmlElement("STATUSMESSEGE")]
        public string STATUSMESSEGE { get; set; }

        [System.Xml.Serialization.XmlElement("REFUNDID")]
        public string REFUNDID{ get; set; }
}

[XmlTypeAttribute(AnonymousType = true)]
public class REFUND
{
        [XmlArray("REFUND")]
        public List<REFUNDVW> Refunds { get; set; }

        public REFUND()
        {
            Refunds = new List<REFUNDVW>();
        }
}

我想將XML響應字符串存儲在我創建的類的實例中,並將其傳遞給Razor視圖以將其顯示給用戶。

有很多錯誤

這是更新的Xml

<?xml version="1.0" encoding="UTF-8"?>
<REFUND>
  <MERCHANTID>123</MERCHANTID>
  <TRANSACTIONID>100045448545</TRANSACTIONID>
  <AMOUNT>100.00</AMOUNT>
  <STATUSCODE>M5</STATUSCODE>
  <STATUSMESSAGE>Invalid transaction date</STATUSMESSAGE>
  <REFUNDID>NA</REFUNDID>
</REFUND>

我修復了以下問題:

  1. 刪除第一行末尾的\\ n
  2. 打開和關閉標簽在第四行不匹配。
  3. 類顯示並在退款中排列,但Xml具有退款中的所有元素
  4. 您在REFUND類中具有以下內容:[XmlArray(“ REFUND”)]指示類別Refund有一個子類別Refund
  5. 這是我使用的代碼,該代碼沒有給出異常,但由於類和XML不匹配而僅返回根類REFUND

      string responseString = File.ReadAllText(FILENAME); XmlSerializer xmlSer = new XmlSerializer(typeof(REFUND)); StringReader stringReader = new StringReader(responseString); REFUND reader = (REFUND)xmlSer.Deserialize(stringReader); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM