Преобразование класса C # в XML с двойным типом данных - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь преобразовать Netsuite Record (CashSale) в XML-эквивалент, используя XMLSerializer в приложении c #.Однако свойства с двойным типом данных не отражаются в строке 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 все свойства, включая двойной тип данных, должны быть преобразованы в строку XML Фактическое: свойства с типом данных Double не преобразуются в XML

Минимальные повторяемые шаги:

  1. Создание веб-ссылки с использованием https://webservices.netsuite.com/wsdl/v2019_1_0/netsuite.wsdl

  2. Создание объекта для CashSale

  3. Присвойте некоторые значения для полей двойного типа данных вместе с другими.

  4. Сериализация строки XML

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Я нашел решение для этой проблемы:

Изменения завершены: я добавил еще одно логическое поле суммы, указанные в запросе и установил для него true

0 голосов
/ 13 июня 2019

Это может вам помочь:

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

 public static YourClass LoadFromXMLString(string xmlText)
    {
        using(var stringReader = new System.IO.StringReader(xmlText))
        {
            var serializer = new XmlSerializer(typeof(YourClass ));
            return serializer.Deserialize(stringReader) as YourClass ;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...