#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-данными?