属性不会序列化为XML属性

时间:2015-04-26 11:18:58

标签: c# xml asp.net-web-api

我正在尝试将类序列化为XML并将属性序列化为类的属性,而不是嵌套节点。我正在使用WebApi来自动处理XML的序列化。

这是我的班级:

[DataContract (Namespace="", Name="AttributeTest")]
[Serializable]
public class AttributeTestClass
{
    [XmlAttribute("Property")]
    [DataMember]
    public int Property1 { get; set; }
}

以下是我收到的输出(请注意,Property1 不是属性,尽管它使用[XmlAttribute]进行了装饰):

<AttributeTest xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Property1>123</Property1>
</AttributeTest>

这是我想要收到的输出:

<AttributeTest Property1="123" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
</AttributeTest>

我错过了什么?

1 个答案:

答案 0 :(得分:2)

我不熟悉WebApi,但您收到的输出看起来像是使用XmlSerializer序列化的,而不是您需要的Application_Start。检查是否将以下内容添加到Global.asax的{​​{1}}帮助:

GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(
    new System.Net.Http.Formatting.XmlMediaTypeFormatter());
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;

(来自http://serena-yeoh.blogspot.de/2013/02/xml-serialization-in-aspnet-web-api.html