[英]How to specify multiple namespaces in DataContract attribute
給定業務對象“訂單”,我如何實現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。
假設您正在使用DataContractSerializer
, 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"
會自動包含在內。 這是因為它是一個標准名稱空間 ,其中包含標准屬性的定義,包括nil
(代表空值)和type
(持有多態類型的類型信息)。 由於幾乎總是需要這些屬性,因此通常將名稱空間添加到根元素,而實際上DataContractSerializer
這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.