簡體   English   中英

如何在DataContract屬性中指定多個名稱空間

[英]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。

假設您正在使用DataContractSerializerDataContractSerializer需要向該類添加[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM