XmlSerializer用逗号,十进制符号反序列化十进制

问题描述

| 我想知道是否有使用XmlSerialier用逗号十进制分隔符反序列化十进制的任何简单方法? 我正在从其他软件获取xml格式的导出数据,并且xml文件中的所有数字(价格,数量,折扣以及更多)都用逗号作为小数点分隔符。 这是我尝试做的简化示例: 可以说有名称和价格的产品类别:
[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中的Price为3.50时,Everythig可以正常工作。 我知道我可以将价格属性更改为sting和TryParse十进制,但是也许有更好的解决方案(例如切换区域性)? 任何建议,解决方案和意见表示赞赏。 更新: 忘记提及我的当前区域性设置已经使用逗号作为十进制符号。     

解决方法

我怀疑是否存在一种内置方式,因为具有不使用句点的数字的XML文档不是XML文档:) OTOH,此答案有很多可能的解决方案: 在XSLT中使用逗号将数字加起来作为小数点分隔符?