DataContractSerialization的等效XMLAttribute?

问题描述:

我在看转换我们目前使用XMLSerializer序列化/反序列化的类来使用DataContractSerializer。我期望切换的主要原因是因为您使用DataContractSerializer获得的OnDeserialized回调功能。如果需要的话,我真的希望能够利用对象的初始化。在我试图转换的课程中,根据它们在XML中的显示方式,<XmlAttribute()><XmlElement()>有几种用途。DataContractSerialization的等效XMLAttribute?

我已经创建了一个测试类,只是调用具有几个不同属性的Person,以便测试将对象序列化为XML,然后将其反序列化为对象。这很好,但我不确定的一件事是为需要成为XML属性的属性指定什么,而不是元素(下面的“ID”)。

这就是我想要的:

<Person ID="5"> 
    <FullName>FirstName LastName</FullName> 
</Person> 

这就是我得到:

<Person> 
    <FullName>FirstName LastName</FullName> 
    <ID>5</ID> 
</Person> 

在下面的例子中,如何我指定ID是一个属性,而不是一个元件?所以XML序列化时显示出来像上面:

<DataContract()> _ 
Public Class Person 

    <DataMember()> _ 
    Public FullName As String 

    '//What should go here? 
    Public ID As Integer 

End Class 

<System.Xml.Serialization.XmlAttribute()> 

应该解决您的问题,为更多的信息,请参阅MSDN XmlAttribute reference

+0

谢谢,但不只适用于XML序列化?我正在寻找一种通过DataContract序列化来指定XML属性的方法。 – lhan 2012-08-01 16:38:25

+1

哦,你不能用DataContract [更多细节在这里](http://*.com/questions/591907/how-can-you-control-wcf-serialization-so-it-uses-attributes-instead-of -elements)。 – 2012-08-01 17:07:56

+0

是的,我想到:(噢,谢谢! – lhan 2012-08-01 18:35:32