要控制.NET DataContract序列化,以便它使用XML属性而不是元素,您可以使用DataContractSerializer
的DataContractAttribute
和DataMemberAttribute
属性。以下是一个示例:
首先,定义一个类并使用DataContractAttribute
进行标记:
[DataContract]
public class Person
{
// 使用 DataMemberAttribute 标记属性
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "age")]
public int Age { get; set; }
}
接下来,使用DataContractSerializer
序列化和反序列化对象:
public static string Serialize(Person person)
{
using (var memoryStream = new MemoryStream())
using (var reader = new StreamReader(memoryStream))
{
var serializer = new DataContractSerializer(typeof(Person));
serializer.WriteObject(memoryStream, person);
memoryStream.Position = 0;
return reader.ReadToEnd();
}
}
public static Person Deserialize(string xml)
{
using (var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
{
var serializer = new DataContractSerializer(typeof(Person));
return (Person)serializer.ReadObject(memoryStream);
}
}
这样,序列化后的XML将使用属性而不是元素。例如,序列化上面的Person
对象将生成以下XML:
<id>1</id>
<name>John Doe</name>
<age>30</age>
</Person>
在这个例子中,我们使用了DataContractSerializer
来控制.NET DataContract序列化,使其使用XML属性而不是元素。这样,您可以更好地控制序列化后的XML格式。
领取专属 10元无门槛券
手把手带您无忧上云