【问题标题】:.NET XmlSerializer and decimals.NET XmlSerializer 和小数
【发布时间】:2011-09-02 21:25:52
【问题描述】:

我在远程 xsd 文件上使用 xsd.exe 来生成一些 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 文件中不喜欢它。

【问题讨论】:

    标签: c# .net xml xsd


    【解决方案1】:

    “87,000”与xs:decimal 类型不匹配。

    没有允许逗号的 XSD 类型。

    【讨论】:

      【解决方案2】:

      此数据类型的定义对该数据类型下允许的数字大小没有任何限制。除非您的表单处理准备好处理数千位(甚至更长)的数字,否则您应该限制允许的上限和下限,以及小数点后的位数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多