.net Xml反序列化程序无法反序列化
我想将xml文件反序列化为对象,但无法将上下文属性从下面的xml获取到对象.net Xml反序列化程序无法反序列化,.net,xml,c#-4.0,xml-serialization,deserialization,.net,Xml,C# 4.0,Xml Serialization,Deserialization,我想将xml文件反序列化为对象,但无法将上下文属性从下面的xml获取到对象 <Receipt> <Data context="LastYear"> <OtherIncomeReceiptDataEntity ID="5011"> <Amount>5000</Amount> <DatePaid>41274</DatePaid> <TaxDe
<Receipt>
<Data context="LastYear">
<OtherIncomeReceiptDataEntity ID="5011">
<Amount>5000</Amount>
<DatePaid>41274</DatePaid>
<TaxDeducted>1000</TaxDeducted>
<AllowableExpenses>2000</AllowableExpenses>
<Status>Ok</Status>
</OtherIncomeReceiptDataEntity>
</Data>
<Data context="CurrentYear">
<OtherIncomeReceiptDataEntity ID="5012">
<Amount>5000</Amount>
<DatePaid>41274</DatePaid>
<TaxDeducted>1000</TaxDeducted>
<AllowableExpenses>2000</AllowableExpenses>
<Status>Ok</Status>
</OtherIncomeReceiptDataEntity>
</Data>
</Receipt>
任何建议都将不胜感激
更新(对象结构)
公共类收据
{
公共列表数据{get;set;}
}
公共类数据
{
[XmlAttribute(“上下文”)]
公共int上下文{get;set;}
公共OtherIncomeReceiptDataEntity OtherIncomeReceiptDataEntity{get;set;}
}
您希望将上下文存储在哪里?更新的修订对象我可以将上下文值存储到OtherIncomeReceiptDataEntity对象,但当将对象序列化回XML时,我需要将其添加回数据元素。我不确定这是否重要,但“context”属性是int类型,而属性不是数字(例如去年)我现在已将上下文更改为字符串,但它不起作用。
public class Receipt
{
public List<OtherIncomeReceiptDataEntity> Data { get; set; }
}
public class OtherIncomeReceiptDataEntity
{
[XmlAttribute("openspaceID")]
public int openspaceID { get; set; }
public double Amount { get; set; }
public int DatePaid { get; set; }
public double TaxDeducted { get; set; }
public double AllowableExpenses { get; set; }
public DBEStatus Status { get; set; }
}
Receipt otherIncomes = null;
string path = "otherIncomes.xml";
XmlSerializer serializer = new XmlSerializer(typeof(Receipt));
StreamReader reader = new StreamReader(path);
otherIncomes = (Receipt)serializer.Deserialize(reader);
reader.Close();
public class Receipt
{
public List<Data> Data { get; set; }
}
public class Data
{
[XmlAttribute("context")]
public int context { get; set; }
public OtherIncomeReceiptDataEntity OtherIncomeReceiptDataEntity { get; set; }
}