C# 如何在web api响应中排除Xml序列化中的属性名
我有一个名为GetUnitResponse的类,其定义如下 public partial class GetUnitResponse { [System.ServiceModel.MessageBodyMemberAttribute(Name = "GetUnitResponse", Namespace = "", Order = 0)] [System.Xml.Serialization.XmlArrayItemAttribute("Unit", IsNullable=false)] public UnitOut[]GetUnitResponse1; public GetUnitResponse() { } public GetUnitResponse(UnitOut[] GetUnitResponse1) { this.GetUnitResponse1 = GetUnitResponse1; } } 公共部分类GetUnitResponse { [System.ServiceModel.MessageBodyMemberAttribute(Name=“GetUnitResponse”,Namespace=”,Order=0)] [System.Xml.Serialization.XmlArrayItemAttribute(“单位”,IsNullable=false)] 公共UnitOut[]GetUnitResponse1; 公共GetUnitResponse() { } 公共GetUnitResponse(UnitOut[]GetUnitResponse1) { this.GetUnitResponse1=GetUnitResponse1; } } 我从response(GetUnitResponse)对象中获得以下xmlC# 如何在web api响应中排除Xml序列化中的属性名,c#,xml,asp.net-web-api,C#,Xml,Asp.net Web Api,我有一个名为GetUnitResponse的类,其定义如下 public partial class GetUnitResponse { [System.ServiceModel.MessageBodyMemberAttribute(Name = "GetUnitResponse", Namespace = "", Order = 0)] [System.Xml.Serialization.XmlArrayItemAttribute("Unit", IsNullable=fals
客户端希望排除GetUnitResponse1标记,结果xml应如下所示:
如何实现这一点?默认情况下,ASP.NET Web API使用来序列化XML。不幸的是,此序列化程序不支持将集合序列化为未包装的元素列表。另一方面,允许更灵活的XML和更多的定制 您可以指示ASP.NET Web API使用XmlSerializer而不是默认的XmlSerializer: 现在剩下的就是用
[xmlement]
属性装饰字段:
为了更好地封装,我建议您使用属性而不是字段
<pre>
<GetUnitResponse xmlns:xsi="" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<GetUnitResponse1>
<Unit day="2016-01-27" ID="572">
</Unit>
<Unit day="2016-01-27" ID="573">
</Unit>
<Unit day="2016-01-27" ID="574">
</Unit>
</GetUnitResponse1>
</GetUnitResponse>
</pre>
<pre>
<GetUnitResponse xmlns:xsi="" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Unit day="2016-01-27" ID="572">
</Unit>
<Unit day="2016-01-27" ID="573">
</Unit>
<Unit day="2016-01-27" ID="574">
</Unit>
</GetUnitResponse>
</pre>
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;
public partial class GetUnitResponse
{
[XmlElement("Unit")]
public UnitOut[] GetUnitResponse1;
...
}