簡體   English   中英

C#如何將DataSet.GetXml()十進制分隔符更改為“,”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM