Страницы

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

воскресенье, 8 марта 2020 г.

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

#c_sharp #xml #xsd


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

 
  
     
    
  
 


проблема в том что 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?
    


Ответы

Ответ 1



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

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

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