Deserealizar xml a objeto c# (xml no siempre tiene todos los nodos)

tengo que deserealizar un XML a un objeto de una clase definida, el problema es el siguiente: suponiendo la clase tiene 3 atributos (a, b y c), los xml vienen con los 3 atributos y es fácil deserealizarlos al objeto, mi inconveniente es que en algunas ocasiones el XML no viene con todos los nodos completos, por decir solo viene con el nodo a y c, entonces como hago para deserealizarlo a un objeto y para el nodo que no tiene poner null por ejemplo u otro valor por defecto.

2
задан 27.10.2016, 16:41
2 ответа

Ты можешь определять свойство IsNullable в XmlElementAttribute, определенный. Например:

public class MyClass
{
   [XmlElement(IsNullable = true)]
   public string Campo1;
   [XmlElement(IsNullable = true)]
   public string Campo2;
}
1
ответ дан 24.11.2019, 12:53

Если ты не смог решать это используя признаки, которые комментируют тебе наверху. Я использовал бы признаки DataContract и DataMember и меня создал бы мой собственный deserializador.

Но, если то, что это consumiento xml какого-то внешнего ресурса вместо того, чтобы это последовательно преобразовывать прямо, ты можешь получать ответ и вручную с методом помощи распределять стоимость, и так ты сможешь устанавливать стоимость для, когда он мстит null какой-либо из стоимости.

PD: Если то, что ты хочешь, состоит в том, чтобы загружать xml и загружать Вашу стоимость в объекте, так как тогда он использует linq to XML: MSDN Linq to XML

-1
ответ дан 24.11.2019, 12:53