Мое приложение сериализует объекты в потоках. Вот пример того, что мне нужно:
В этом случае объект представляет собой набор объектов «ссылки».
-----------Первая версия
Сначала я использовал DataContractSerializer , однако вы не можете сериализовать элементы как атрибуты (. источник)
Вот объект:
[DataContract(Name="link")]
public class LinkV1
{
[DataMember(Name="href")]
public string Url { get; set; }
[DataMember(Name="rel")]
public string Relationship { get; set; }
}
И вот результат:
/users
users
/features
features
-----------Вторая версия
Хорошо, не совсем то, что я хочу, поэтому я попробовал классический XmlSerializer , но... о нет, вы не можете указать имя корневого элемента и элементов коллекции, если корневой элемент является коллекцией...
Вот код:
[XmlRoot("link")]
public class LinkV2
{
[XmlAttribute("href")]
public string Url { get; set; }
[XmlAttribute("rel")]
public string Relationship { get; set; }
}
Вот результат:
-----------Третья версия
используя XmlSerializer + корневой элемент:
[XmlRoot("trick")]
public class TotallyUselessClass
{
[XmlArray("links"), XmlArrayItem("link")]
public List Links { get; set; }
}
И его результат:
Хорошо, но мне не нужен этот корневой узел!! Я хочу, чтобы моя коллекция была корневым узлом.
Вот ограничения:
Каковы мои решения сейчас:
Есть идеи ?
Что меня действительно беспокоит в этом вопросе, так это то, что то, что я хочу, кажется действительно очень простым...