#c# #.net #xml #xml-serialization
#c# #.net #xml #xml-сериализация
Вопрос:
Дан следующий код…
[XmlType("Field")]
public class SearchField
{
[XmlAttribute("alias")]
public string Alias;
[XmlAttribute("entity")]
public string Entity;
}
Псевдоним является необязательным полем для нас, но десериализатор выдает, когда атрибут «alias» отсутствует в xml. Как сделать это необязательным? Требуется ли схема?
Ответ №1:
Странно, потому что следующая программа отлично работает для меня, без каких-либо метаний:
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
[XmlType("Field")]
public class SearchField
{
[XmlAttribute("alias")]
public string Alias;
[XmlAttribute("entity")]
public string Entity;
}
class Program
{
static void Main()
{
using (var reader = new StringReader("<Field entity="en" />"))
{
var serializer = new XmlSerializer(typeof(SearchField));
var s = (SearchField)serializer.Deserialize(reader);
Console.WriteLine(s.Alias);
Console.WriteLine(s.Entity);
}
}
}
Как вы можете видеть alias
, атрибут отсутствует во входном XML, и все же десериализация не вызывает проблем.