Ошибка десериализации XML из вывода XML веб - службы
У меня есть веб-сервис, который возвращает ответ в формате XML. Я получаю ошибку при чтении ответа, если в ответе есть пустые поля.
Я пробовал разные коды для десериализации XML, но ни один из них не работает.
У меня ниже написан код десериализации. Я попробовал этот вариант, и он бросал соединение с сервером закрытым после получения ответа. Не знаю, в чем может быть проблема, пожалуйста, помогите мне как можно раньше.
Что я уже пробовал:
[System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public class T_OUTPUTItem { [XmlElement("BUKRS")] public ushort BUKRS { get; set; } [XmlElement("WERKS")] public ushort WERKS { get; set; } [XmlElement("NAME1")] public string NAME1 { get; set; } [XmlElement("REGIO")] public string REGIO { get; set; } [XmlElement("MATKL")] public string MATKL { get; set; } [XmlElement("MATNR")] public ushort MATNR { get; set; } [XmlElement("LGORT")] public string LGORT { get; set; } [XmlElement("GRDIP")] public double? GRDIP {get; set;} [XmlElement("TRNDATE")] public System.DateTime TRNDATE { get; set; } [XmlElement("VOL_NATURAL")] public double? VOL_NATURAL { get { if (VOL_NATURAL == 0) { return 0; } else return VOL_NATURAL; } } [XmlElement("GRDIP_RUN")] public double? GRDIP_RUN { get { if (GRDIP_RUN == 0) { return 0; } else return GRDIP_RUN; } } [XmlElement("VOL_RUNNING")] public double? VOL_RUNNING { get { if (VOL_RUNNING == 0) { return 0; } else return VOL_RUNNING; } } } }
Мой ответ будет выглядеть следующим образом
<pre><ns0:YV_PIPELINE_PLANT_DIP_DETAILS.Response xmlns:ns0="urn:sap-com:document:sap:rfc:functions"> <E_MSG/> <T_OUTPUT> <item> <BUKRS>2200</BUKRS> <WERKS>2222</WERKS> <NAME1>IOCL,JHARSUGUDA TERMINAL</NAME1> <REGIO>OR</REGIO> <MATKL>BULK-MS</MATKL> <MATNR>16400</MATNR> <LGORT>PIPE</LGORT> <GRDIP/> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>208.375</VOL_NATURAL> <GRDIP_RUN/> <VOL_RUNNING/> </item> <item> <BUKRS>2200</BUKRS> <WERKS>2222</WERKS> <NAME1>IOCL,JHARSUGUDA TERMINAL</NAME1> <REGIO>OR</REGIO> <MATKL>BULK-MS</MATKL> <MATNR>16400</MATNR> <LGORT>T005</LGORT> <GRDIP>0212.8</GRDIP> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>454.573</VOL_NATURAL> <GRDIP_RUN>0825.5</GRDIP_RUN> <VOL_RUNNING>1686.183</VOL_RUNNING> </item> <item> <BUKRS>2200</BUKRS> <WERKS>2222</WERKS> <NAME1>IOCL,JHARSUGUDA TERMINAL</NAME1> <REGIO>OR</REGIO> <MATKL>BULK-MS</MATKL> <MATNR>16400</MATNR> <LGORT>T006</LGORT> <GRDIP>0188.0</GRDIP> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>844.502</VOL_NATURAL> <GRDIP_RUN>0611.1</GRDIP_RUN> <VOL_RUNNING>2756.545</VOL_RUNNING> </item> <item> <BUKRS>2200</BUKRS> <WERKS>2222</WERKS> <NAME1>IOCL,JHARSUGUDA TERMINAL</NAME1> <REGIO>OR</REGIO> <MATKL>BULK-MS</MATKL> <MATNR>16400</MATNR> <LGORT>T007</LGORT> <GRDIP>157.2</GRDIP> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>699.171</VOL_NATURAL> <GRDIP_RUN>0159.3</GRDIP_RUN> <VOL_RUNNING>708.663</VOL_RUNNING> </item> <item> <BUKRS>2200</BUKRS> <WERKS>2222</WERKS> <NAME1>IOCL,JHARSUGUDA TERMINAL</NAME1> <REGIO>OR</REGIO> <MATKL>BULK-MS</MATKL> <MATNR>16403</MATNR> <LGORT>PIPE</LGORT> <GRDIP/> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>0</VOL_NATURAL> <GRDIP_RUN/> <VOL_RUNNING/> </item> <item> <BUKRS>2200</BUKRS> <WERKS>2222</WERKS> <NAME1>IOCL,JHARSUGUDA TERMINAL</NAME1> <REGIO>OR</REGIO> <MATKL>BULK-SKO</MATKL> <MATNR>40000</MATNR> <LGORT>PIPE</LGORT> <GRDIP/> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>99.572</VOL_NATURAL> <GRDIP_RUN/> <VOL_RUNNING/> </item> <item> <BUKRS>2200</BUKRS> <WERKS>2222</WERKS> <NAME1>IOCL,JHARSUGUDA TERMINAL</NAME1> <REGIO>OR</REGIO> <MATKL>BULK-SKO</MATKL> <MATNR>40000</MATNR> <LGORT>T010</LGORT> <GRDIP>1427.9</GRDIP> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>2190.395</VOL_NATURAL> <GRDIP_RUN>1606.9</GRDIP_RUN> <VOL_RUNNING>2464.582</VOL_RUNNING> </item> <item> <BUKRS>2200</BUKRS> <WERKS>2222</WERKS> <NAME1>IOCL,JHARSUGUDA TERMINAL</NAME1> <REGIO>OR</REGIO> <MATKL>BULK-SKO</MATKL> <MATNR>40000</MATNR> <LGORT>T011</LGORT> <GRDIP>0283.3</GRDIP> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>435.725</VOL_NATURAL> <GRDIP_RUN>1026.0</GRDIP_RUN> <VOL_RUNNING>1578.163</VOL_RUNNING> </item> <item> <BUKRS>2200</BUKRS> <WERKS>2222</WERKS> <NAME1>IOCL,JHARSUGUDA TERMINAL</NAME1> <REGIO>OR</REGIO> <MATKL>BULK-HSD</MATKL> <MATNR>56000</MATNR> <LGORT>T001</LGORT> <GRDIP>1574.9</GRDIP> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>8354.031</VOL_NATURAL> <GRDIP_RUN>1819.4</GRDIP_RUN> <VOL_RUNNING>9649.826</VOL_RUNNING> </item> <item> <BUKRS>2200</BUKRS> <WERKS>2222</WERKS> <NAME1>IOCL,JHARSUGUDA TERMINAL</NAME1> <REGIO>OR</REGIO> <MATKL>BULK-HSD</MATKL> <MATNR>56000</MATNR> <LGORT>T002</LGORT> <GRDIP>334.2</GRDIP> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>1770.146</VOL_NATURAL> <GRDIP_RUN>1819.5</GRDIP_RUN> <VOL_RUNNING>9649.669</VOL_RUNNING> </item> <item> <BUKRS>3300</BUKRS> <WERKS>3384</WERKS> <NAME1>IOT INFRASTRUCTURE & ENERGY SE</NAME1> <REGIO>CSG</REGIO> <MATKL>BULK-HSD</MATKL> <MATNR>56000</MATNR> <LGORT>T01D</LGORT> <GRDIP>222.8</GRDIP> <TRNDATE>2019-09-01</TRNDATE> <VOL_NATURAL>16610.006</VOL_NATURAL> <GRDIP_RUN/> <VOL_RUNNING/> </item> </T_OUTPUT> </ns0:YV_PIPELINE_PLANT_DIP_DETAILS.Response>
Gerry Schmitz
Возможно, сериализация "сработала", и проблема заключается в остальной части вашего кода (поскольку вы не показываете никакого кода, который имеет значение).