Sto costruendo un servizio WCF autoportante. Sto costruendo una struttura dati speciale per un trasporto dei dati molto flessibile. Finora provo se la mia struttura è serializzabile usando DataContractSerializer. Che funziona bene e sono felice di questo, ma c'è qualcosa di fastidioso me:Predefinire gli spazi dei nomi XML per DataContractSerializer
Nel mio output XML sono decine ridefiniti xmlns attributi ad esempio:
xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:b="http://www.w3.org/2001/XMLSchema"
Questo dovrebbe essere meglio definito una volta l'elemento radice in modo che i byte possano essere semplicemente ottimizzati. C'è un modo per aggiungere informazioni di namespace personalizzate all'elemento root?
Ecco un esempio più grande di dimostrare quello che voglio dire:
<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>
Quello che voglio è qualcosa di simile:
<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 [Come serializzare un oggetto in XML senza ottenere xmlns = “...”?]://stackoverflow.com/questions/258960/how-to-serialize-an-object-to-xml-without-getting-xmlns) <- Questo contiene ciò che vuoi –
@MarkusJarderot no non proprio. Sembra essere un modo per sbarazzarsi degli spazi dei nomi in generale. I contratti di WCF hanno bisogno di quello (finora lo so)! Voglio solo evitare che ci siano ridefinizioni severe. – rekire