serialize serializar objeto net example convertir clase c# xml c#-4.0 xml-serialization

c# - objeto - cómo deserializar un nodo xml con un valor y un atributo utilizando la serialización de asp.net



xml document serialize c# (1)

En AnswerItem , AnswerItem una propiedad llamada Value y márquela con el atributo XmlText . Esta configuración hará que XmlSerializer lea el texto en el elemento AnswerItem en la propiedad Value .

[Serializable()] public class AnswerItem { [XmlAttribute("Id")] public Guid QuestionId { get; set; } [XmlText] public string Value { get; set; } }

Tengo 4 clases pequeñas para deserializar xml de una encuesta xml incomming, a clases utilizables para construir la encuesta.

ahora, sé cómo configurar una propiedad de una clase, para que coincida con un determinado atributo o elemento en el xml, y si ese elemento es solo una cadena que es fácil, pero ¿qué sucede si el elemento también tiene un atributo como en el siguiente ejemplo?

<Questions> <Question id="a guid"> <AnswerItems> <AnswerItem Id="a guid">3</AnswerItem> <AnswerItem Id="a guid">2</AnswerItem> <AnswerItem Id="a guid">5</AnswerItem> </AnswerItems> </Question> </Questions>

La clase de pregunta se vería así:

[Serializable()] public class Question { [XmlAttribute("Id")] public Guid QuestionId { get; set; } [XmlArray("AnswerItems")] [XmlArrayItem("AnswerItem", typeof(AnswerItem))] public AnswerItem[] AnswerItems { get; set; } } [Serializable()] public class AnswerItem { [XmlAttribute("Id")] public Guid QuestionId { get; set; } // how do i fetch the value of this node? // its not a XmlElement and it''s not an XmlValue }

Ok, entonces el valor de un nodo AnswerItem, eso es lo que quiero obtener también. podría fácilmente no usar la clase AnswerItem, y simplemente usar un AnswerLtems XmlArray de tipo String y poner los valores en la matriz, pero luego perdería el atributo de Id del AnswerItem.