我使用ServiceStack进行XML反序列化最简单的方法是,当XML包含命名空间时。然而,我接收到的XML没有包含命名空间。以下是最简单的可行示例:
但是这会给我带来以下错误:
我无法创建一个新的Serializer,因为ServiceStack.Text.XmlSerializer是静态的。我需要选择Microsoft XmlSerializer或ServiceStack(不可以两者兼用)。这意味着:如果我无法让这个简单的例子工作,我就需要跳过ServiceStack包中非常有用的部分。我最不想做的事情就是在传入的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
我无法创建一个新的Serializer,因为ServiceStack.Text.XmlSerializer是静态的。我需要选择Microsoft XmlSerializer或ServiceStack(不可以两者兼用)。这意味着:如果我无法让这个简单的例子工作,我就需要跳过ServiceStack包中非常有用的部分。我最不想做的事情就是在传入的xml中注入一些虚假的命名空间。