【发布时间】:2012-03-30 04:32:14
【问题描述】:
让 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 中注入一些虚拟命名空间。
【问题讨论】:
标签: c# namespaces servicestack xmlserializer