【问题标题】:.net core 5 Web API serialize object with elements as attributes.net core 5 Web API以元素为属性序列化对象
【发布时间】:2021-03-19 23:28:14
【问题描述】:

如果我在 .net 5 web api 中启用了 xml 序列化:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers()
        .AddXmlSerializerFormatters()
        .AddJsonOptions(o => 
        {
            o.JsonSerializerOptions.PropertyNamingPolicy = null;
        });

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "DemoService", Version = "v1" });
    });
}

它使用什么 xml 序列化器/反序列化器,我如何控制对象属性是否被序列化为属性与元素?

【问题讨论】:

    标签: .net-core asp.net-core-webapi


    【解决方案1】:

    为此,您可以使用属性装饰类属性。 例如,我们有一个名为 Book 的类。我们希望将 id 显示为 xml 属性,将标题显示为 xml 元素:

    public class Book
        {
            [XmlAttribute]
            public int Id { get; set; }
            [XmlElement]
            public string Title { get; set; }
        }
    

    生成的xml如下:

     <ArrayOfBook xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <Book Id="1">
            <Title>Book 1</Title>
        </Book>
        <Book Id="2">
            <Title>Book 2</Title>
        </Book>
      </ArrayOfBook>
    

    【讨论】:

    • 我认为 XmlAttribute 和 XmlElement 由 XmlSerializer 使用。我不认为 .net 5 web api 使用序列化程序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    相关资源
    最近更新 更多