Задать вопрос

Что не так делаю при получении xml serializer C#?

Привет. Через xsd получил класс NewDataSet для специального xml файлика. Но при сериализации получаю ошибку: "ошибка в xml(2,2)". Прошу указать мою ошибку.

NewDataSet _nds = new NewDataSet(); 

FileStream fs = new FileStream("D:\\XML_cbr_asp.xml", FileMode.OpenOrCreate);
TextReader reader2 = new StreamReader(fs);

XmlSerializer serializer = new XmlSerializer(typeof(NewDataSet));
_nds = (NewDataSet)serializer.Deserialize(reader); // тут получаю ошибку 
/*
Необработанное исключение типа "System.InvalidOperationException" в System.Xml.dll
Дополнительные сведения: В документе XML (2, 2) присутствует ошибка.
*/


Класс для работы с xml
public partial class NewDataSet {
    
    private ValCurs[] itemsField;
    

    [System.Xml.Serialization.XmlElementAttribute("ValCurs")]
    public ValCurs[] Items {
        get {
            return this.itemsField;
        }
        set {
            this.itemsField = value;
        }
    }
}


<?xml version="1.0" encoding="windows-1251" ?>
<ValCurs Date="13.02.2015" name="Foreign Currency Market">
<Valute ID="R01010">
	<NumCode>036</NumCode>
	<CharCode>AUD</CharCode>
	<Nominal>1</Nominal>
	<Name>Австралийский доллар</Name>
	<Value>50,7379</Value>
</Valute>
<Valute ID="R01020A">
	<NumCode>944</NumCode>
	<CharCode>AZN</CharCode>
	<Nominal>1</Nominal>
	<Name>Азербайджанский манат</Name>
	<Value>84,2675</Value>
</Valute>
</ValCurs>
  • Вопрос задан
  • 5676 просмотров
Подписаться 3 Оценить 1 комментарий
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Для представленного XML, классы будут примерно такими:
[Serializable]
[XmlRoot("ValCurs")]
public class ValCurs
{

  [XmlAttribute("Date")]
  public string Date { get; set; }

  [XmlAttribute("name")]
  public string Name { get; set; }

  [XmlElement("Valute")]
  public Valute[] Items { get; set; }

}

[Serializable]
public class Valute
{

  [XmlAttribute("ID")]
  public string Id { get; set; }
  public string NumCode { get; set; }
  public string CharCode { get; set; }
  public string Name { get; set; }
  public string Nominal { get; set; }
  public string Value { get; set; }

}

Посмотреть пример работы этого кода в .NET Fiddle.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы