У меня есть XML в этом формате -Deserialize комплекс XML в C# объект
<Areas>
<Area>
<Property Name="Test11">a1</Property>
<Property Name="Test12">a2</Property>
<Property Name="Test13">a3</Property>
<Property Name="Test14">a4</Property>
<Property Name="Test15">a5</Property>
</Area>
<Area>
<Property Name="Test21">b1</Property>
<Property Name="Test22">b2</Property>
<Property Name="Test23">b3</Property>
<Property Name="Test24">b4</Property>
<Property Name="Test25">b5</Property>
</Area>
</Areas>
Я генерировал класс, используя xsd.exe предоставляемые Microsoft, как -
[Serializable()]
public partial class Areas
{
[XmlArrayItem("Property", typeof(AreasAreaProperty))]
public AreasAreaProperty[][] Area { get; set; }
}
[Serializable()]
public partial class AreasAreaProperty
{
[XmlAttribute()]
public string Name { get; set; }
[XmlText()]
public string Value { get; set; }
}
код для десериализации это -
private void Deserialize()
{
XmlSerializer xs = new XmlSerializer(typeof(Areas));
FileStream fs = new FileStream("XMLFile1.xml", FileMode.Open);
XmlReader xr = new XmlTextReader(fs);
Areas a = (Areas)xs.Deserialize(xr);
fs.Close();
}
Но во время deserilaization, я получаю эту ошибку - Невозможно преобразовать тип 'AreasAreaProperty []' в 'AreasAreaProperty' Я получаю эту ошибку во время создания объекта XMLSerializer.
Как решить эту проблему ?? Заранее спасибо ..
Спасибо. Ошибка больше не возникает, но когда я проверяю значение объекта a. Он содержит только значения для последней области. Как получить значения для области выше? –
Вы имеете в виду что-то вроде foreach (AreasAreaProperty a in foobar.Area) ? –
@RohitVats Вы когда-нибудь задумывались, как получить оба района? Я пытаюсь сделать то же самое и пока не понял. Пожалуйста, напишите, если вы решили. Благодарю. – CodeChops