Страницы

Поиск по вопросам

четверг, 30 мая 2019 г.

проблема при десериализации пустого элемента xml

есть простой хмл

проблема в том что Dprtm_code может быть как заполнен 234234234 так и нет . создал схему :
//... //...
создал класс и в нем описал эти поля:
//... private long? dprtm_codeField; private string dprtm_nameField;
[XmlElementAttribute(IsNullable=true)] public long? Dprtm_code { get { return this.dprtm_codeField; } set { this.dprtm_codeField = value; } } public string Dprtm_name { get { return this.dprtm_nameField; } set { this.dprtm_nameField = value; } } //...
но при десериализации хмл с пустым кодом падает ошибка приведения типов. собственно вопрос: как правильно объявить елементы которые могут быть пустыми в xml?


Ответ

Xml, соответствующий приведённой схеме и десериализующийся в приведённый класс, должен выглядеть следующим образом:

То есть, обязательно должен быть атрибут nil из указанного пространства имён. Его корректно обрабатывает XmlSerializer (полагаю, что используется именно он).
При сериализации атрибут xsi:nil будет добавляться автоматически при необходимости.
Без этого атрибута валидация по схеме тоже не проходит.

Комментариев нет:

Отправить комментарий