Tengo un problema al deserializar algunos XML; el XML suministrado por un tercero es bastante detallado, por lo que si no hay ningún valor establecido para un elemento en particular, proporcionará y vaciará el elemento (por ejemplo, <element1 />
).Usar decoraciones XML para especificar valores predeterminados durante la deserialización
Esto es un problema para ciertos elementos, por ejemplo, aquellos que están destinados a almacenar enteros. Tengo control sobre el tercero, así que puedo hacer que especifiquen un valor predeterminado (<myinteger>0</myinteger>
) o puedo hacer que omitan estos elementos por completo. Ambos deberían evitar el problema.
Sin embargo, puede haber situaciones en el futuro, donde no tenemos tanto control, en cuyo caso, ¿hay alguna manera de especificar, tal vez a través de una decoración, un valor predeterminado?
[XmlElement("myinteger")=0???]
public int MyInteger
{
get
{
return myInteger;
}
set
{
myInteger= value;
}
}
Hmmmm ... simplemente que el tercero omita elementos vacíos de una descripción parece la solución más fácil. Solo tenía curiosidad por saber qué podía hacer y no tenía el lujo de esa elección. Consideré la opción de cadena, pero es solo una gran cantidad de lombrices ... – CJM
Hay al menos un efecto importante durante la deserialización. Si el elemento está vacío, sin DefaultValue puede haber un error de análisis. Sin embargo, con él, el [código generado] (http://msdn.microsoft.com/en-us/library/aa302290.aspx) omitirá el elemento vacío. –