鉴于业务对象'订单',如何实现DataContract属性,以便Order对象序列化为:
<Order xmlns="http://schemas.datacontract.org/2004/07/appulsive.MyCompany.SomeWebService"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
...etc.
</Order>
似乎有一个默认命名空间和一个特定命名空间。我被告知需要使用相关的Web服务。
TIA。
答案 0 :(得分:0)
假设您使用的是DataContractSerializer
,则只需将[DataContract(Name="desired name", Namespace="desired namespace")]
添加到该类中:
[DataContract(Name = "Order", Namespace = "http://schemas.datacontract.org/2004/07/appulsive.MyCompany.SomeWebService")]
public class Order
{
/// Various data members
[DataMember]
public string SomeStuff { get; set; }
}
完成此操作后,您还需要使用[DataMember]
标记要序列化的所有属性,因为数据协定序列化是选择加入的。然后DataContractSerializer
生成的XML将如下所示:
<Order xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/appulsive.MyCompany.SomeWebService"> <SomeStuff>some stuff</SomeStuff> </Order>
如您所见,名称空间"http://www.w3.org/2001/XMLSchema-instance"
会自动包含在内。那是因为它是一个standard namespace,它包含标准属性的定义,包括nil
(表示空值)和type
(保持多态类型的类型信息)。由于几乎总是需要这些属性,因此将命名空间添加到根元素是常规的,事实上DataContractSerializer
也是如此。