En cuanto a mi otra pregunta: XML deserialize null elements?XML, ¿qué es esto: elemento nulo o vacío?
Tengo elementos como estos desde un servidor de terceros para las pruebas API:
<Taxable />
<DefaultPurchasePrice />
me he dado cuenta de que ahora estoy confundiendo a mí mismo acerca de si elementos como que representan un objeto nulo o vacío.
Hablando de objetos, son lo mismo, objeto nulo normalmente significa referencia de objeto vacío ¿no? Pero tratando de mapear un elemento XML a un campo/valor de datos, podrían ser diferentes, es decir, una cadena vacía es una cadena vacía, pero para el precio decimal o el valor booleano no están definidos, lo que equivale a vacío, pero no serán nulos, a menos que estén definidos como nulo.
Una vez más, el problema con mi XmlSerializer es que no manejaría la transferencia de un elemento vacío como ese. podría arreglarlo fácilmente en mi código ¿O debería preguntar a las personas que el XML tiene un XML bien definido? Porque parece que un elemento XML vacío como ese no está definido: está aquí, pero podría ser nulo o vacío, ¿no importa para el elemento XML en sí mismo? Pero para ese elemento mi código necesita resolver cómo lidiar con eso, a menos que configure todos mis campos de datos de clase C como un tipo de cadena. De lo contrario, si mi código intenta asignar directamente un elemento XML vacío o nulo a un determinado campo de datos, se producirá un error.
Tengo que hacer esta pregunta porque encontré que XML tiene muchos de esos elementos y para esos elementos especiales, mi código de .NET XMLserialization necesita mapear esos campos como una cadena y si la cadena no está vacía, los caso en tipo de datos correspondiente, de lo contrario, los configuré como nulos. Y termino eliminando esos elementos vacíos antes de hacer mi deserialización porque es mucho más fácil. Pero deambulo: "¿Qué estoy haciendo realmente en mi código? ¿Acabo de eliminar los elementos nulos o los elementos vacíos? ¡Porque son claramente diferentes! Pero las personas que escriben ese XML piensan que son iguales, porque XML en sí mismo no tiene concepto de 'nulo', y algunas personas argumentan que es mi responsabilidad de decidir si es nulo o vacío Pero XML que no permiten represent 'null' elements in a clearer way
Editar:.
En el ejemplo que presenté, esos dos elementos claramente debe ser nulo en lugar de elementos vacíos. XML no tiene realmente un concepto de nulo, pero esos elementos podrían omitirse (si son nulos, no ponerlos en XML) o utilizar una mejor representación como se mencionó be @svick . O en otros casos, vacío los elementos deben usarse cuando tengan sentido. Pero no para Decimal o Boolean.
Una etiqueta de elemento vacía es XML válido. Cómo interpretas, nulo, vacío o lo que sea, depende totalmente de ti. – fpmurphy1
@fmurphy: esa debería ser una respuesta ... Lo hubiera votado –
@fpmurphy, ¿entonces es un elemento vacío? –