Десериализация XML работает только с пространством имен в xml

Самый простой способ заставить работать десериализацию 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.

8
задан user247702 4 December 2014 в 11:01
поделиться