Я десериализую некоторый XML в свой класс, который работает нормально. Я хочу, чтобы XML-код не содержал элемент для одного из свойств моего класса, вместо того, чтобы установить свойство в null, я хочу, чтобы он был эквивалентом String.Empty.XML Deserialize Missing Element
Например, это XML:
<Person>
<Title>Mr</Title>
<FullName>John Smith</FullName>
</Person>
Это Класс:
[XmlRoot("Person")]
public sealed class PersonObject
{
[XmlElement("Title")]
public string NamePrefix { get; set; }
[XmlElement("FullName")]
public string FullName { get; set; }
[XmlElement("JobTitle")]
public string JobTitle { get; set; }
}
В настоящее время, если я deserialise в этот объект, JobTitle устанавливается в нуль. Я хочу, чтобы это было установлено в пустую строку, как если бы я передал JobTitle в XML, но значение было равно ничто.
Возможно ли это сделать с использованием какого-либо свойства по методу Serialization?
Насколько я могу сказать вам, вероятно, необходимо создать настраиваемый атрибут, который наследуется от 'XmlElementAttribute', чтобы выполнить это. Я должен спросить, почему, почему «нуль» имеет значение? Разве вы не можете справиться с этим в своем коде? – Yuck
В методе веб-службы, который я вызываю в результате этого, он не обрабатывает значения null, и мне не нужно делать какую-то грязную замену. Я знаю, какие поля потенциально могут быть пустыми, потому что я использую схему для разных XML-входов. – Mark