如何解决.Net Core XML 删除列表的包装标签
我目前正在尝试格式化 XML 响应以匹配特定格式,但在显示我希望隐藏的标签时遇到问题。
所以我现在的回复如下:
<ExportShipmentsResult>
<dataExtract>
<DataExtract>
<shipment>
<ShipID>123456</ShipID>
<ShipNo>PSS111198</ShipNo>
<ShipDate>5 Dec 2011 14:44</ShipDate>
<CustCode>1111/1</CustCode>
<ShipSumm>SU</ShipSumm>
<PONumbers>por:0121</PONumbers>
<ShipComments />
<SuperUsers />
<OrderItem>
<orderItem>
<Code>100001</Code>
<Qty>1</Qty>
</orderItem>
<orderItem>
<Code>100002</Code>
<Qty>1</Qty>
</orderItem>
</OrderItem>
</shipment>
</DataExtract>
</dataExtract>
</ExportShipmentsResult>
</ExportShipmentsResponse>
我的问题是我不想显示“Wrapping”标签,所以以 OrderItem 为例,我想要的结果是:
<SuperUsers />
<OrderItem>
<Code>100001</Code>
<Qty>1</Qty>
</OrderItem>
<OrderItem>
<Code>100002</Code>
<Qty>1</Qty>
</OrderItem>
</shipment>
我将 OrderItem 设置为列表,并且我正在使用 MessageContract(IsWrapped=false) 但它似乎不起作用,没有错误,只是被忽略了。
型号:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd","4.8.3928.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true,Namespace = "http://www.magishop.com/")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.magishop.com/",IsNullable = false)]
[MessageContract]
public partial class ExportShipmentsResponse
{
private string resultField;
[MessageBodyMember]/// <remarks/>
public List<dataExtract> ExportShipmentsResult { get; set; }
}
public class dataExtract
{
[MessageBodyMember]
public List<shipment> DataExtract { get; set; }
}
public class shipment
{
[MessageBodyMember]
public string ShipID { get; set; }
[MessageBodyMember]
public string ShipNo { get; set; }
[MessageBodyMember]
public string ShipDate { get; set; }
[MessageBodyMember]
public string CustCode { get; set; }
[MessageBodyMember]
public string ShipSumm { get; set; }
[MessageBodyMember]
public string PONumbers { get; set; }
[MessageBodyMember]
public string ShipComments { get; set; }
[MessageBodyMember]
public string SuperUsers { get; set; }
[MessageBodyMember]
public List<orderItem> OrderItem { get; set; }
}
[MessageContract(IsWrapped=false)]
public class orderItem
{
[MessageBodyMember]
public string Code { get; set; }
[MessageBodyMember]
public string Qty { get; set; }
}
下面是我构建订单项列表并将其添加到我的货件中的位置。
public class CallbackService : ICallbackService
{
public Task<ExportShipmentsResponse> ExportShipments(ExportShipments request)
{
orderItem orderitem1 = new orderItem()
{
Code = "100001",Qty = "1"
};
orderItem orderitem2 = new orderItem()
{
Code = "100002",Qty = "1"
};
List<orderItem> orderItems = new List<orderItem>();
orderItems.Add(orderitem1);
orderItems.Add(orderitem2);
shipment shipment = new shipment()
{
ShipID = "123456",ShipNo = "PSS111198",ShipDate = "5 Dec 2011 14:44",CustCode = "1111/1",ShipSumm = "SU",PONumbers = "por:0121",ShipComments = "",SuperUsers = "",OrderItem = orderItems
};
List<shipment> shipments = new List<shipment>();
shipments.Add(shipment);
dataExtract dataExtract = new dataExtract()
{
DataExtract = shipments
};
List<dataExtract> dataExtracts = new List<dataExtract>();
dataExtracts.Add(dataExtract);
return Task.Fromresult(new ExportShipmentsResponse
{
ExportShipmentsResult = dataExtracts
});
}
}
对于我可能遗漏的任何想法,我们将不胜感激。
解决方法
不清楚是客户端还是服务端。但是可以查看客户端的IClientMessageInspector和服务器端的IDispatchMessageInspector。接口包含add和remove方法供参考。
下面的链接可能会解决问题。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。