WCF REST:是否可以删除添加到响应XML中的名称空间?

WCF REST:是否可以删除添加到响应XML中的名称空间?,wcf,rest,namespaces,Wcf,Rest,Namespaces,我想删除添加到服务响应中的默认xmlns(名称空间)(请参见下图) 有办法做到这一点吗?这是因为为了从C#windows应用程序中使用此服务,我必须将名称空间添加到每个数据对象的标题-我将序列化的DataContract中。我想如果您只使用 [DataContract(Namespace="")] 在Bookmarks类中,应该可以这样做 我刚刚尝试了这个,得到了以下结果: <CompositeType xmlns:i="http://www.w3.org/2001/XMLSchem

我想删除添加到服务响应中的默认xmlns(名称空间)(请参见下图)


有办法做到这一点吗?这是因为为了从C#windows应用程序中使用此服务,我必须将名称空间添加到每个数据对象的标题-我将序列化的DataContract中。

我想如果您只使用

[DataContract(Namespace="")]
Bookmarks
类中,应该可以这样做


我刚刚尝试了这个,得到了以下结果:

<CompositeType xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <BoolValue>true</BoolValue>
  <StringValue>Hello </StringValue>
</CompositeType>

真的
你好

事实证明,使用@Tawani上的PoxDataContract

扩展是一个完美的解决方案,如果您想支持属性或自定义XML序列化,可以通过创建自定义
IWebFormatter
轻松扩展WcfRestContrib。下面是我对一个类似问题的回答,解释了如何使用XmlSerializer实现这一点

当Bookmarks(CollectionDataContract)是根命名空间时,它不会这样做。添加[DataContract]还需要每个属性都有[DataMember]属性。@Tawani:是的,这是推荐的做法:用[DataContract]显式标记类,用[DataMember]显式标记所有成员。WCF试图鼓励这样一种明确的编码风格——通过这种方式,您的意图更清晰,其他人阅读您的代码更快速、更容易理解您的意图。拥抱它@我不介意用[DataContract]标记所有的类。我只想去掉响应中的根命名空间。这样,我的客户端就不需要为每个对象显式地添加名称空间。@Tawani:使用名称空间确实是一种最佳做法。不过,您应该使用自己的一个,不要让它默认。如果您的一些客户机将操作来自您的服务的XML以及其他XML,则名称空间尤其重要。例如,如果您的服务有一个“Book”元素,而另一个服务也有一个“Book”元素,并且它们都希望合并到一个文档中,则可能存在命名冲突。您不是为您的客户机提供了描述您的XML的XML模式吗?这也会告诉他们名称空间。@John Saunders:我理解你的意思,但它仍然没有任何意义,因为我们的客户只需要解析数据,而不需要将数据与其他数据合并。除此之外,JSON客户端没有名称空间问题。我对这个库很感兴趣,但是有一个.NET标准/PCL版本可以用于Xamarin吗?