我正在尝试将类序列化为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>
我错过了什么?
答案 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)