我的默认小数点分隔符为","当调用方法myDataSet.GetXml()时,myDataSet中的所有十进制值都用点"保存到XML。"分隔器。问题是,当我想将这个XML解析回myDataSet时,VS抛出了Exception,因为这个分隔符,十进制字段只接受十进制值。
示例我如何获取XML:
var xml = myDataSet.GetXml(); //Gives me XML with dots in decimals
我尝试解析DataTable的示例:
var recordsDeleted = new DataTable(); //In my code I clone table from existing
recordsDeleted.Columns.Add("decimalFirst", typeof(decimal));
recordsDeleted.Columns.Add("decimalSecond", typeof(decimal));
recordsDeleted.Columns.Add("text", typeof(string));
var paramsToDataTable = new List<string> {"12.34","22.22","Foo"}; //This comes from XML
recordsDeleted.Rows.Add(paramsToDataTable.ToArray());
请帮助我,如何在保存到XML时更改分隔符,或者在解析时解决问题的其他解决方案。谢谢!
答案 0 :(得分:0)
您需要在应用程序开头将numbereperator设置为CulutreInfo
答案 1 :(得分:0)
DataSet.GetXml()
会使用句点分隔符导出十进制列,如您所知。您无法更改此信息:XML架构数字数据类型始终使用句点分隔符。
但是,这段代码:
recordsDeleted.Rows.Add(paramsToDataTable.ToArray());
将尝试使用paramsToDataTable.ToArray()
的文化将DataTable
中的每个值转换为适当的数据类型。
此文化默认为CultureInfo.CurrentCulture
,但您可以按如下方式覆盖它:
var recordsDeleted = new DataTable();
recordsDeleted.Locale = CultureInfo.InvariantCulture;
您应该注意,使用DataTable
将XML读入DataTable.ReadXml()
更为常见。如果你这样做,你就不必担心文化/地区。