C# Xml反序列化返回空值,但Xml有值
我看了一些话题,但没有一个看起来像我的问题 这是我的班级:C# Xml反序列化返回空值,但Xml有值,c#,.net,xml,serialization,xml-parsing,C#,.net,Xml,Serialization,Xml Parsing,我看了一些话题,但没有一个看起来像我的问题 这是我的班级: namespace Framework.Cielo.Models { [XmlRoot("transacao", Namespace = "http://ecommerce.cbmp.com.br")] public class TransactionResponse { [XmlAttribute("id")] public string ID { get; set; }
namespace Framework.Cielo.Models
{
[XmlRoot("transacao", Namespace = "http://ecommerce.cbmp.com.br")]
public class TransactionResponse
{
[XmlAttribute("id")]
public string ID { get; set; }
[XmlAttribute("versao")]
public string Version { get; set; }
[XmlElement("tid")]
public string tid { get; set; }
[XmlElement("pan")]
public string pan { get; set; }
[XmlElement("dados-pedido")]
public EstablishmentOrder Order { get; set; }
[XmlElement("forma-pagamento")]
public PaymentMethod PaymentMethod { get; set; }
[XmlElement("status")]
public TransactionStatusEnum Status { get; set; }
[XmlElement("url-retorno")]
public string ReturnUrl { get; set; }
[XmlElement("autenticacao")]
public Authentication Authentication { get; set; }
}
}
这是身份验证类
namespace Framework.Cielo.Models
{
[XmlRoot("autenticacao")]
public class Authentication
{
[XmlElement("codigo")]
public int Code { get; set; }
[XmlElement("mensagem")]
public string Message { get; set; }
[XmlIgnore]
public DateTime Date { get; set; }
[XmlElement("data-hora")]
public string FormattedDate
{
get
{
return Date.ToString("yyyy-MM-ddTHH:mm:ss");
}
set
{
DateTime kdc = DateTime.MinValue;
DateTime.TryParse(value, out kdc);
Date = kdc;
}
}
[XmlElement("valor")]
public int Value { get; set; }
[XmlElement("lr")]
public int SecurityLevel { get; set; }
[XmlElement("arp")]
public object arp { get; set; }
[XmlElement("nsu")]
public object nsu { get; set; }
}
}
以下是我如何反序列化:
string serializado = File.ReadAllText("req.xml");
var stringReader = new System.IO.StringReader(serializado);
var serializer = new XmlSerializer(typeof(TransactionResponse));
TransactionResponse preAuthResponse = serializer.Deserialize(stringReader) as TransactionResponse;
这是我的XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<transacao versao="1.3.0" id="100" xmlns="http://ecommerce.cbmp.com.br">
<tid>10069930690A16DF1001</tid>
<pan>b1SQ6jpKCDt3n9C0dgD/ZkPQ1Bh+7aJESqr/CwP64P0=</pan>
<dados-pedido>
<numero>100</numero>
<valor>29900</valor>
<moeda>986</moeda>
<data-hora>2013-10-15T00:57:19.032-03:00</data-hora>
<descricao/>
<idioma>PT</idioma>
<taxa-embarque>0</taxa-embarque>
</dados-pedido>
<forma-pagamento>
<bandeira>mastercard</bandeira>
<produto>1</produto>
<parcelas>1</parcelas>
</forma-pagamento>
<status>4</status>
<autenticacao>
<codigo>4</codigo>
<mensagem>Transacao sem autenticacao</mensagem>
<data-hora>2013-10-15T00:57:19.037-03:00</data-hora>
<valor>29900</valor>
<eci>0</eci>
</autenticacao>
<autorizacao>
<codigo>4</codigo>
<mensagem>Transação autorizada</mensagem>
<data-hora>2013-10-15T00:57:19.041-03:00</data-hora>
<valor>29900</valor>
<lr>00</lr>
<arp>123456</arp>
<nsu>661215</nsu>
</autorizacao>
</transacao>
10069930690A16DF1001
b1SQ6jpKCDt3n9C0dgD/ZKPK1BH+7aJESqr/CwP64P0=
100
29900
986
2013-10-15T00:57:19.032-03:00
PT
0
万事达卡
1.
1.
4.
4.
Transacao sem autenticacao
2013-10-15T00:57:19.037-03:00
29900
0
4.
自动通行证
2013-10-15T00:57:19.041-03:00
29900
00
123456
661215
当我运行此代码时,所有元素都正确,但不是ARP
和NSU
元素(autorizao标记的最后2个)
我真的不知道为什么。这个XML来自一个web服务,我不明白为什么我的反序列化不适用于最后两个项目,而适用于任何其他元素。我尝试了您的代码并更新了以下内容,它可以工作
[XmlElement("arp")]
public int arp { get; set; }
[XmlElement("nsu")]
public int nsu { get; set; }
将ARP和NSU从对象更改为int@LostInComputer已经做了。。。还是一样:(多好的一分钟…ARP和NSU在autorizacao元素中,但你的课程是为Auenticao!你可能把AutoRizao和Auenticao混淆了。@LostInComputer感谢上帝!你是对的!:(我很确定我错过了一些东西。我02:31在巴西,我从昨天早上8点开始工作,我真的很累:(谢谢你的时间!递给莱安德罗一杯刚煮好的浓咖啡