У меня есть следующие классы C#не в состоянии десериализации XML в общий список
[XmlTypeAttribute(AnonymousType = true)]
public class TransactionTypesHolder
{
[XmlArrayItem("TransactionType", typeof(TransactionType))]
public List<TransactionType> TransactionTypes { get; set; }
public TransactionTypesHolder()
{
TransactionTypes = new List<TransactionType>();
}
}
public class TransactionType
{
[XmlElement("Mti")]
public string Mti { get; set; }
[XmlElement("Description")]
public string Description { get; set; }
//[XmlArrayItem("Field", typeof(Field))]
//public List<Field> Fields { get; set; }
[XmlArray(ElementName = "Fields")]
[XmlArrayItem("Field", typeof(Field))]
public List<Field> Fields { get; set; }
}
[Serializable]
public class Field
{
[XmlElement("FieldNumber")]
public string FieldNumber { get; set; }
[XmlElement("Description")]
public string Description { get; set; }
//[XmlArrayItem("FieldPart", typeof(FieldPart))]
//public List<FieldPart> FieldParts { get; set; }
[XmlArray(ElementName = "FieldParts")]
[XmlArrayItem("FieldPart", typeof(FieldPart))]
public List<FieldPart> FieldParts { get; set; }
}
[Serializable]
public class FieldPart
{
[XmlElement("PartNumber")]
public string PartNumber { get; set; }
[XmlElement("PartValue")]
public string PartValue { get; set; }
}
Я пытаюсь десериализации через следующий код
try
{
XmlSerializer serializer = new
XmlSerializer(typeof(TransactionTypesHolder));
// A FileStream is needed to read the XML document.
FileStream fs = new FileStream("Xmlfile1.xml", FileMode.Open);
XmlReader reader = XmlReader.Create(fs);
// Declare an object variable of the type to be deserialized.
TransactionTypesHolder i;
// Use the Deserialize method to restore the object's state.
i = (TransactionTypesHolder)serializer.Deserialize(reader);
fs.Close();
}
catch (Exception ex)
{
}
Но получаю ошибку не ожидается.
Мой XML является
<?xml version="1.0" ?>
<TransactionTypes>
<TransactionType>
<Mti>200</Mti>
<Description>Debit</Description>
<Fields>
<Field>
<FieldNumber>3</FieldNumber>
<Description></Description>
<FieldParts>
<FieldPart>
<PartNumber>
1
</PartNumber>
<PartValue>
00
</PartValue>
<Description></Description>
</FieldPart>
<FieldPart>
<PartNumber>
2
</PartNumber>
<PartValue>
00
</PartValue>
<Description></Description>
</FieldPart>
</FieldParts>
</Field>
<Field>
<FieldNumber>14</FieldNumber>
<Description></Description>
<FieldParts>
<FieldPart>
<PartNumber>
1
</PartNumber>
<PartValue>
9911
</PartValue>
<Description></Description>
</FieldPart>
</FieldParts>
</Field>
</Fields>
</TransactionType>
<TransactionType>
<Mti>100</Mti>
<Description>Balance</Description>
<Fields>
<Field>
<FieldNumber>3</FieldNumber>
<Description></Description>
<FieldParts>
<FieldPart>
<PartNumber>
1
</PartNumber>
<PartValue>
31
</PartValue>
<Description></Description>
</FieldPart>
<FieldPart>
<PartNumber>
2
</PartNumber>
<PartValue>
00
</PartValue>
<Description></Description>
</FieldPart>
</Field>
<Field>
<FieldNumber>14</FieldNumber>
<Description></Description>
<FieldParts>
<FieldPart>
<PartNumber>
1
</PartNumber>
<PartValue>
9911
</PartValue>
<Description></Description>
</FieldPart>
</FieldParts>
</Field>
</Fields>
</TransactionType>
</TransactionTypes>
Я изменил его соответствующим образом, но получил такую же ошибку не ожидалось. –
Любая идея, что я делаю неправильно? –
Отсутствие эффекта после изменения атрибута полей и полей. Infact Я успешно десериализую одну запись TransactionType xml в объект TransactionType. Проблема заключается только в заполнении списка –