Microsoft.AspNet.Mvc.Formatters.Xml

时间:2016-03-28 18:45:07

标签: c# xml asp.net-mvc xml-serialization

我在asp.net 5控制器中将对象作为xml返回。该对象具有一个列表属性,我需要序列化程序忽略列表的根元素。我已经按照这篇文章的建议Use XML serialization to serialize a collection without the parent node但由于某种原因它不起作用,如果我尝试使用[XmlElement(“newName”)改变其名称,则忽略它)

为什么它可能会这样做的任何线索?

public partial class Doc {

    [XmlElement("Detalle")]
    public List<DefTypeDetalle> Detalle { get; set; }

}

public partial class DefTypeDetalle {

    public Id { get; set; }
}

我得到的输出

<Doc>
    <Detalle>
        <DefTypeDetalle>
            <Id>1<Id/>
        </DefTypeDetalle>
        <DefTypeDetalle>
            <Id>2<Id/>
        </DefTypeDetalle>
    </Detalle>
</Doc>

我想要的是

<Doc>   
    <Detalle>
        <Id>1<Id/>
    </Detalle>
    <Detalle>
        <Id>2<Id/>
    </Detalle>  
</Doc>

感谢

2 个答案:

答案 0 :(得分:1)

所以问题是我正在使用的格式化程序,我在Startup.cs

 mvcBuilder.AddXmlDataContractSerializerFormatters();

并且需要使用xml序列化程序

mvcBuilder.AddXmlSerializerFormatters();

答案 1 :(得分:0)

这可能是您对数据进行序列化的方式。试试

XmlSerializer serializer = new XmlSerializer(typeof(List<DefTypeDetalle>));
    using ( TextWriter writer = new StreamWriter( @"your_directory")
    {
        serializer.Serialize(writer, your_list) 
    }