[英]C# How to change DataSet.GetXml() decimal separator to “,”
當調用方法myDataSet.GetXml()時,我的默認小數點分隔符為“,”,myDataSet中的所有十進制值均以點“。”保存到XML。 分隔器。 問題是,當我想將此XML解析回myDataSet時,VS拋出異常,由於該分隔符,十進制字段僅接受十進制值。
我如何獲取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時如何更改分隔符,或在解析時解決問題的其他解決方案。 謝謝!
您需要在應用程序開始時將CulutreInfo的數字分隔符設置為,
如前所述, DataSet.GetXml()
導出帶有句點分隔符的十進制列。 您不能更改此設置:XML模式數字數據類型始終使用句點分隔符。
但是,此代碼:
recordsDeleted.Rows.Add(paramsToDataTable.ToArray());
會嘗試使用DataTable
的區域性將paramsToDataTable.ToArray()
中的每個值轉換為適當的數據類型。
該區域性默認為CultureInfo.CurrentCulture
,但是您可以按如下所示覆蓋它:
var recordsDeleted = new DataTable();
recordsDeleted.Locale = CultureInfo.InvariantCulture;
您應該注意,使用DataTable.ReadXml()
將XML讀入DataTable
更為常見。 如果您這樣做,則無需擔心文化/地區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.