.NET XmlSerializer и десятичные дроби - PullRequest
4 голосов
/ 03 сентября 2011

Я использовал xsd.exe в удаленном файле xsd для генерации некоторых определений класса C #.Один тип определяется как

<xs:element name="amount">
    <xs:simpleType>
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

Когда я пытаюсь десериализовать XML-файл, я получаю сообщение об ошибке:

There is an error in XML document (30, 12). ---> System.FormatException: Input string was not in a correct format.

Это происходит только тогда, когда в качестве разделителя группировки используется запятая(т.е. 87 000).Если я пройду и удалю запятые везде, где есть ошибка, десериализация работает нормально.

Могу ли я внести некоторые изменения в xsd, чтобы разрешить группировку запятых?Или еще лучше, чтобы учесть это в моем коде?Попытка разобрать десятичную дробь в моем коде с запятыми работает нормально, просто не нравится в xml-файле.

Ответы [ 2 ]

7 голосов
/ 03 сентября 2011

"87 000" не соответствует типу xs:decimal.

Не существует типа XSD, который допускает запятые.

1 голос
/ 03 сентября 2011

Определение этого типа данных не определяет никаких ограничений на размер чисел, допустимых для этого типа данных. Если ваша обработка формы не готова обрабатывать число, состоящее из тысяч цифр (или даже больше), вы должны использовать ограничение на допустимые верхний и нижний пределы и количество цифр после десятичной точки .

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