我想知道是否有使用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中的价格为3.50时,Everythig工作正常。
我知道我可以将Price propertie改为sting和TryParse decimal,但也许有更好的解决方案(例如切换文化)?
任何建议,解决方案和评论都表示赞赏。
更新 忘记提及我当前的文化设置已经使用逗号作为小数符号。
答案 0 :(得分:3)
我怀疑是否存在内置方式,因为带有不使用句点的数字的XML文档不是XML文档:) OTOH,这个答案有很多可能的解决方案: