Estoy creando un servicio WCF alojado en uno mismo. Estoy construyendo una estructura de datos especial para un transporte de datos muy flexible. Hasta ahora pruebo si mi estructura es serializable usando el DataContractSerializer. Eso funciona muy bien y estoy feliz por eso, pero hay algo que me molesta:Predefinir espacios de nombres XML para DataContractSerializer
En mi salida XML son redefinidas decenas xmlns atributos por ejemplo:
xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:b="http://www.w3.org/2001/XMLSchema"
Esto debería definirse mejor una vez en el elemento raíz para que los bytes puedan ser simplemente optimizados. ¿Hay alguna manera de agregar información personalizada del espacio de nombres al elemento raíz?
Aquí está un ejemplo grande para demostrar lo que quiero decir:
<DataObject xmlns="http://schemas.datacontract.org/2004/07/Test"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Data xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:KeyValueOfstringanyType>
<a:Key>ID</a:Key>
<a:Value i:type="b:int" xmlns:b="http://www.w3.org/2001/XMLSchema">1</a:Value>
</a:KeyValueOfstringanyType>
<a:KeyValueOfstringanyType>
<a:Key>Value</a:Key>
<a:Value i:type="b:int" xmlns:b="http://www.w3.org/2001/XMLSchema">42</a:Value>
</a:KeyValueOfstringanyType>
</Data>
<Data xmlns:a="...">...</Data>
<Data xmlns:a="...">...</Data>
<Data xmlns:a="...">...</Data>
</DataObject>
Lo que yo quiero es algo como esto:
<DataObject xmlns="http://schemas.datacontract.org/2004/07/Test"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:b="http://www.w3.org/2001/XMLSchema">
<Data>
<a:KeyValueOfstringanyType>
<a:Key>ID</a:Key>
<a:Value i:type="b:int">1</a:Value>
</a:KeyValueOfstringanyType>
<a:KeyValueOfstringanyType>
<a:Key>Value</a:Key>
<a:Value i:type="b:int">42</a:Value>
</a:KeyValueOfstringanyType>
</Data>
<Data>...</Data>
<Data>...</Data>
<Data>...</Data>
</DataObject>
(http [Cómo serializar un objeto a XML sin conseguir xmlns = “...”?]://stackoverflow.com/questions/258960/how-to-serialize-an-object-to-xml-without-getting-xmlns) <- Esto contiene lo que quiere –
@MarkusJarderot no realmente. Esa parece ser una forma de deshacerse de los espacios de nombres en general. ¡Los contratos de WCF necesitan eso (hasta ahora lo sé)! Solo quiero evitar que haya redefiniciones serias. – rekire