У меня есть некоторый 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;}