微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.Net Core XML 删除列表的包装标签

如何解决.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方法供参考。

下面的链接可能会解决问题。

https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.dispatcher.iclientmessageinspector?view=netframework-4.8

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?