The most simple way I get ServiceStack xml deserialization to work is when the xml contains a namespace. However, the xml I receive do not contain namespaces. The most simple working example:
[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);
}
}
However, that is not what I want. I want the following to deserialize, since that is the xml I get from several services:
string xml="<test></test>";
But that gives me the following error:
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 ''.
I tried:
[Serializable]
[XmlRoot("test", Namespace = "")]
public class test
I can't create a new Serializer, because ServiceStack.Text.XmlSerializer is static. I need to choose for either Microsoft XmlSerializer OR ServiceStack (not both). Meaning: if I can't get this simple example to work I need to skip an otherwise very useful part of the ServiceStack package. The last thing I want is to inject some dummy namespace in the incoming xml.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…