2009-04-07 81 views
0

早在2.0系列化的日子裏,我可以創建一個對象的序列化版本,會導致下面的例子:)WCF XML序列化

<transactionMessage messageDate="1/1/2001 11:00PM" messageId="abc123"> 
    <transaction property1="Value" property2="value2" /> 
</transactionMessage> 

我會做這個用Serializable(屬性,然後追加XmlElement屬性到我的項目。當我使用DataContract /數據成員,雖然屬性,我得到的東西看起來是這樣的:

<transactionMessage> 
    <messageDate>1/1/2001 11:00PM</messageDate> 
    <messageId>abc123</mesageId> 
    <transaction> 
    <property1>Value</property1> 
    <property2>Valu2</property2> 
    </transaction> 
</transactionMessage> 

通常我不會很在意幕後所生成的XML,但是這個系統將與多個外部客戶端進行交互誰已經與另一個系統(基於2.0的序列化風格)交談,我想保持結構相似,但引入了WCF的增強功能。

我該如何告訴DataMember屬性,使其格式更像是第一個帶有屬性的示例,而不是所有元素的元素?

回答

2

DataContract序列化程序針對速度進行了優化,似乎設計人員決定在XML節點上支持屬性不符合其速度要求。

DataContract序列化程序不支持屬性 - 如果需要這些屬性,請改爲使用可敬的XmlSerializer。

Marc

+0

聽起來不錯。我敢肯定,互動的人會抱怨一點,但他們可以克服它!謝謝您的幫助。 – RubyHaus 2009-04-09 14:35:33

0

我不使用WCF,但試試你messageDate和MESSAGEID屬性之前加入

[XmlAttribute]