首页 > 解决方案 > 将 c# 类转换为具有双数据类型的 XML

问题描述

我正在尝试在 c# 应用程序中使用 XMLSerializer 将 Netsuite Record(CashSale) 转换为 XML 等效项。但是数据类型为 double 的属性未反映在 XML 字符串中

我在 c# 中创建了一个具有双数据类型属性的类,我可以在 xml 字符串中看到属性和值

我尝试将 Netsuite Cashsale 类转换为 xml 字符串。双数据类型属性未反映在 xml 字符串中

CashSale cs = new CashSale();
            cs.altHandlingCost = Convert.ToDouble(10.73.ToString(), CultureInfo.CurrentCulture);
            cs.entity = new RecordRef { internalId = "311", type = RecordType.customer };
            cs.externalId = "54658";
            cs.memo = "POS Memo";
            cs.tranDate = DateTime.Now.AddDays(-1);
            cs.undepFunds = false;
            cs.account = new RecordRef { internalId = "915" };
            cs.subsidiary = new RecordRef { internalId = "2" };
            cs.location = new RecordRef { internalId = "101" };
            CashSaleItem[] item = { new CashSaleItem { amount = 10,taxAmount=1, taxCode = new RecordRef { internalId = "7" },  description = "dec", item = new RecordRef { externalId = "4000Bev" } } };

            cs.itemList = new CashSaleItemList { item = item };

            var a=Serialize(cs);
            WriteResponse writeRes = Client.Service.upsert(cs);
public static string Serialize(object dataToSerialize)
    {
        if (dataToSerialize == null) return null;

        using (StringWriter stringwriter = new System.IO.StringWriter())
        {
            var serializer = new XmlSerializer(dataToSerialize.GetType());
            serializer.Serialize(stringwriter, dataToSerialize);
            return stringwriter.ToString();
        }
    }

预期:对于 Netsuite 类,包括 double 数据类型在内的所有属性都应转换为 XML 字符串 实际:数据类型为 Double 的属性不会转换为 XML

最小可重复步骤:

  1. 使用https://webservices.netsuite.com/wsdl/v2019_1_0/netsuite.wsdl创建 Web 参考

  2. 为 CashSale 创建一个对象

  3. 为双数据类型字段分配一些值以及其他值。

  4. 序列化为 XML 字符串

标签: c#xmlnetsuite

解决方案


我找到了解决这个问题的方法:

更改完成:我在请求中添加了一个布尔字段数量并将其设置true


推荐阅读