Il modo più semplice per far funzionare la deserializzazione xml di ServiceStack è quando il xml contiene uno spazio dei nomi. Tuttavia, l'xml che ricevo non contiene spazi dei nomi. L'esempio più semplice:La deserializzazione XML funziona solo con lo spazio dei nomi in xml
[Serializable]
public class test
{
}
class Program
{
static void Main(string[] args)
{
string xml="<test xmlns=\"http://schemas.datacontract.org/2004/07/\"></test>";
var result = ServiceStack.Text.XmlSerializer.DeserializeFromString<test>(xml);
}
}
Tuttavia, questo non è quello che voglio. Voglio che la segue per deserializzare, dato che questo è il codice XML che ricevo da diversi servizi:
string xml="<test></test>";
Ma che mi dà il seguente errore:
DeserializeDataContract: Error converting type: Error in line 1 position 7.
Expecting element 'test' from namespace
'http://schemas.datacontract.org/2004/07/'..
Encountered 'Element' with name 'test', namespace ''.
ho provato:
[Serializable]
[XmlRoot("test", Namespace = "")]
public class test
Non riesco a creare un nuovo serializzatore, perché ServiceStack.Text.XmlSerializer è statico. Devo scegliere tra Microsoft XmlSerializer O ServiceStack (non entrambi). Significato: se non riesco a far funzionare questo semplice esempio, ho bisogno di saltare una parte altrimenti molto utile del pacchetto ServiceStack. L'ultima cosa che voglio è iniettare qualche spazio dei nomi fittizio nell'xml in arrivo.
Grazie! Quello era l'anello mancante di cui avevo bisogno! In qualche modo non riesco a trovare la documentazione giusta come questa per ServiceStack ... – user1154148
Qualche ragione per cui non hai scritto il tuo deserializzatore XML? Quello di Microsoft sembra aver bisogno solo di questo tipo di configurazione di salsa magica per farlo funzionare, a differenza del serializzatore/deserializzatore JSON, che funziona. – JasonD
@JasonD Sì, non mi piace NIH'ing senza una buona ragione e preferisco non usare XML. XML DCS di MS è anche abbastanza performante per XML, c'è poco beneficio per la quantità di sforzo che avrebbe richiesto. – mythz