相关疑难解决方法(0)

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);
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,这不是我想要的.我希望以下代码反序列化,因为这是我从几个服务获得的xml:

string xml="<test></test>";
Run Code Online (Sandbox Code Playgroud)

但是这给了我以下错误:

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 ''.
Run Code Online (Sandbox Code Playgroud)

我试过了:

[Serializable]
[XmlRoot("test", Namespace = "")]
public class test
Run Code Online (Sandbox Code Playgroud)

我无法创建新的Serializer,因为ServiceStack.Text.XmlSerializer是静态的.我需要选择Microsoft XmlSerializer或ServiceStack(不是两者).含义:如果我不能让这个简单的例子工作,我需要跳过ServiceStack包中另一个非常有用的部分.我想要的最后一件事是在传入的xml中注入一些虚拟命名空间.

c# namespaces xmlserializer servicestack

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

namespaces ×1

servicestack ×1

xmlserializer ×1