В XML-документе ошибка (51888, 30). входная строка была в неправильном формате

#c# #windows

#c# #Windows

Вопрос:

Я попытался десериализовать xml, но получаю сообщение «В XML-документе ошибка (51888, 30). входная строка была в неправильном формате».

Приведенный ниже код используется для десериализации xml, DOCUMENT — это класс, который создается из xml

  var serializer = new XmlSerializer(typeof(DOCUMENT));
    var buffer = Encoding.UTF8.GetBytes(savvisXml);
    using (var stream = new MemoryStream(buffer))
    {
    var savvisXMLObj = (DOCUMENT)serializer.Deserialize(stream);
    return savvisXMLObj;
    }
  

Я получаю ошибку в этой строке в XML

 <UNIT_PRICE>0.9800</UNIT_PRICE>
  

UNIT_PRICE объявлена как десятичная в классе DOCUMENT.

Кто-нибудь может помочь мне решить эту проблему. Заранее спасибо

Комментарии:

1. Я предполагаю, что это не первая или даже единственная десятичная дробь в xml? Значит, остальные работают? Есть ли какая-либо разница? Возможно, это проблема культуры, . действительно ли это правильный разделитель? На моей немецкой машине «0.9800» анализируется как 9800, потому что . интерпретируется как разделитель тысяч, а «0,9800» анализируется как 0.9800, поскольку , это десятичный разделитель.

Ответ №1:

Перед десериализацией попробуйте установить язык, который угрожает знаку «.» в качестве десятичного разделителя:

 System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
  

Комментарии:

1. Каково точное сообщение об ошибке? Может быть, другая структура между классом и xml-данными?