У меня есть XML, который я десериализую в бизнес-объект. Я использую XmlSerializer.Deserialize для этого. Однако я хочу, чтобы один из XmlElement, содержащийся в XML, оставался XElement.Частично десериализовать XML для объекта
Это невозможно сделать напрямую (с использованием XmlElementAttribute), поскольку XElement не является Serializable. Я также попытался сериализовать этот элемент в строку (в два шага пытаются получить XElement), но потерпела неудачу с ошибкой:
unexpected node type element. readelementstring method can only be called on elements with simple or empty content
Любая идея, как это может быть сделано?
Вот пример 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;}
Очень приятно. Я не понимаю, почему он занимает внутренний узел при указании XmlElementAttribute в «Хобби». Однако я контролирую XML, поэтому я просто добавил узел обертки вокруг узла «Хобби», чтобы получить то, что мне нужно (вместо использования списка). Большое спасибо. – joerage