У меня есть XML, который я десериализую в бизнес-объект. Для этого я использую XmlSerializer.Deserialize. Однако я хочу, чтобы один из элементов XmlElement, содержащихся в XML, оставался элементом XElement.
Это невозможно сделать напрямую (с помощью XmlElementAttribute), так как XElement не является сериализуемым. Я также попытался сериализовать этот элемент в строку (в два шага, пытаясь получить XElement), но это не удалось с ошибкой:
элемент неожиданного типа узла. Метод readelementstring можно вызывать только для элементов с простым или пустым содержимым.
Любая идея, как это можно сделать?
Вот пример xml и полученного объекта, который мне нужен:
<Person name="Joe">
<Hobbies>
<Hobby name="Reading" .../>
<Hobby name="Photography" .../>
</Hobbies>
<HomeAddress>
...
</HomeAddress>
</Person>
Объект:
public class Person
{
[XmlAttribute("Name")]
public string Name {get; set;}
?????
public XElement Hobbies {get; set;}
[XmlElement("HomeAddress")]
public Address HomeAddress {get; set;}
}
Попытки, которые не работают:
[XmlElement("Hobbies")]
public XElement Hobbies {get; set;}
[XmlElement("Hobbies")]
public string Hobbies {get; set;}