我在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>
感谢
答案 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)
}