Самый простой способ заставить работать десериализацию ServiceStack xml — это когда xml содержит пространство имен. Однако 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);
}
}
Однако это не то, чего я хочу.Я хочу десериализовать следующее, так как это xml, который я получаю от нескольких служб:
string xml="<test></test>";
Но это дает мне следующую ошибку:
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 ''.
Я пробовал:
[Serializable]
[XmlRoot("test", Namespace = "")]
public class test
Я не могу создать новый сериализатор, потому что ServiceStack. Text.XmlSerializer является статическим. Мне нужно выбрать либо Microsoft XmlSerializer, либо ServiceStack (не оба). Значение: если я не могу заставить этот простой пример работать, мне нужно пропустить очень полезную часть пакета ServiceStack. Последнее, что я хочу, это ввести какое-то фиктивное пространство имен во входящий xml.