J'ai du code XML que je désérialise en un objet métier. J'utilise XmlSerializer.Deserialize pour le faire. Cependant, je veux que l'un des XmlElement contenus dans le XML reste un XElement.Désérialise partiellement XML en objet
Cela ne peut pas être fait directement (en utilisant un XmlElementAttribute) puisque XElement n'est pas sérialisable. J'ai aussi essayé de sérialisation cet élément à une chaîne (dans un deux étapes tentent d'obtenir un XElement), mais qui a échoué avec l'erreur:
unexpected node type element. readelementstring method can only be called on elements with simple or empty content
Toute idée de comment cela peut être fait?
Voici un exemple de xml et l'objet résultant je veux:
<Person name="Joe">
<Hobbies>
<Hobby name="Reading" .../>
<Hobby name="Photography" .../>
</Hobbies>
<HomeAddress>
...
</HomeAddress>
</Person>
Objet:
public class Person
{
[XmlAttribute("Name")]
public string Name {get; set;}
?????
public XElement Hobbies {get; set;}
[XmlElement("HomeAddress")]
public Address HomeAddress {get; set;}
}
Les tentatives qui ne fonctionnent pas:
[XmlElement("Hobbies")]
public XElement Hobbies {get; set;}
[XmlElement("Hobbies")]
public string Hobbies {get; set;}
Très agréable. Je ne comprends pas pourquoi il prend le nœud interne lors de la spécification de XmlElementAttribute à 'Loisirs'. J'ai cependant contrôler le XML, donc j'ai simplement ajouté un noeud wrapper autour du nœud 'Hobbies' pour obtenir ce dont j'avais besoin (au lieu d'utiliser une liste). Merci beaucoup. – joerage