【问题标题】:Property will not serialize as XML attribute属性不会序列化为 XML 属性
【发布时间】:2015-04-26 19:47:12
【问题描述】:

我正在尝试将类序列化为 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>

我错过了什么?

【问题讨论】:

  • 我不熟悉 WebApi,但您收到的输出看起来像是使用 DataContractSerializer 序列化的,而不是您需要的 XmlSerializer。检查这是否有帮助:serena-yeoh.blogspot.de/2013/02/…
  • @nodots:做到了,谢谢。请发表您的评论作为答案,以便我给予您信任。再次感谢。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多