XmlSerializer для десериализации десятичной дроби с запятой (,) десятичный символ - PullRequest
4 голосов
/ 25 мая 2011

Я хотел бы знать, есть ли какой-нибудь простой способ десериализации десятичной дроби с разделителем запятых с помощью XmlSerialier?Я получаю экспортированные данные в формате xml из другого программного обеспечения, и все числа (цена, количество, скидка и многое другое) в файле xml имеют запятую в качестве десятичного разделителя.

Вот упрощенный пример, который я пыталсяdo:

Допустим, есть класс продукта с именем и ценой:

[Serializable]
public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}

, и у меня есть xml ...

string xmlExample = "<Product><Name>Coca Cola, 2L</Name><Price>3,50</Price></Product>";

, когда я пытаюсьдесериализовать этот xml ...

XmlSerializer serializer = new XmlSerializer(typeof(Product));
StringReader stringReader = new StringReader(xmlExample);
Product product = serializer.Deserialize(stringReader) as Product; //<-- Error here

Я получаю ошибку В XML-документе есть ошибка (1, 57).

Все работает нормально, когдаЦена в xml составляет 3.50.

Я знаю, что могу изменить свойства цены на sting и TryParse decimal, но, возможно, есть лучшее решение (например, культура переключения)?

Любые предложения, решения и комментарииприветствуются.

ОБНОВЛЕНИЕ: Забыл упомянуть, что мои текущие настройки культуры уже используют запятую в качестве десятичного знака.

1 Ответ

3 голосов
/ 25 мая 2011

Я сомневаюсь, что есть встроенный способ, потому что XML-документы с номерами, которые не используют точку, не являются XML-документами :) ОТО, у этого ответа есть довольно много возможных решений:

Суммирование чисел с запятой в качестве десятичного разделителя в XSLT?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...