2
我想知道是否有任何简单的方法使用XmlSerialier以逗号小数点分隔符来反序列化十进制数? 我从其他软件获取xml格式的导出数据,xml文件中的所有数字(价格,数量,折扣和许多更多)都以逗号作为小数点分隔符。XmlSerializer用逗号(,)反序列化十进制小数点符号
下面是简单的例子就是我试图做:
比方说,有产品类名称和价格:
[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)。
当Price in xml是3.50时Everythig可以正常工作。
我知道我可以将价格特性更改为sting和TryParse十进制,但也许有更好的解决方案(例如切换文化)?
任何建议,解决方案和意见表示赞赏。
更新: 忘了提及我目前的文化设置已经使用逗号作为小数点符号。
是我知道xml standarts说dot是十进制符号,但事实是,我得到了基于xml文件的非standarts。因此,我正在寻找解决方法...感谢链接,我会检查它。 – Reniuz 2011-05-24 20:36:27