Ren*_*iuz 6 c# xml decimal xml-serialization
我想知道是否有任何简单的方法可以使用 XmlSerialier 用逗号小数分隔符反序列化十进制数?我正在从其他软件以 xml 格式导出数据,xml 文件中的所有数字(价格、数量、折扣等等)都以逗号作为小数点分隔符。
这是我尝试做的简化示例:
假设有带有名称和价格的产品类:
[Serializable]
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有 xml ...
string xmlExample = "<Product><Name>Coca Cola, 2L</Name><Price>3,50</Price></Product>";
Run Code Online (Sandbox Code Playgroud)
当我试图反序列化那个 xml 时...
XmlSerializer serializer = new XmlSerializer(typeof(Product));
StringReader stringReader = new StringReader(xmlExample);
Product product = serializer.Deserialize(stringReader) as Product; //<-- Error here
Run Code Online (Sandbox Code Playgroud)
我收到错误XML 文档中有错误 (1, 57)。
当 xml 中的价格为 3.50 时,Everythig 工作正常。
我知道我可以将 Price 属性更改为 sting 和 TryParse 十进制,但也许有更好的解决方案(例如切换文化)?
任何建议,解决方案和意见表示赞赏。
更新: 忘记提及我当前的文化设置已经使用逗号作为十进制符号。