关于小数分隔符的问题

时间:2011-09-09 08:34:23

标签: c# xml separator

小数点分隔符('。'或',')是否取决于CurrentCulture

序列化XML出了问题。 当我输入','作为分隔符时,我有一个例外。 (文化被定为DE-de)

此致

示例(TestProperties是我自己的测试类)

TestProperties properties = new TestProperties 

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName);

double tempValue = 1.23 // Or 1,23
properties.DoubleValue = tempValue;

XmlSerializer serializer = new XmlSerializer(typeof(TestProperties));
TextWriter textWriter = new StreamWriter(XMLPath);
serializer.Serialize(textWriter, properties);
textWriter.Close();


public class TestProperties
    {   
        private double _doubleValue;
        [XmlElement("Double")]
        public double DoubleValue
        {
            get { return _doubleValue; }
            set { _doubleValue = value; }
        }
    }

2 个答案:

答案 0 :(得分:4)

十进制分隔符由当前文化决定,但是,对于XML序列化,不考虑当前的文化。必须使用XML约定; XML中的小数分隔符始终是一个点。

如果您手动构建XML,则应使用XMLConvert类来确保在XML中正确格式化所有数据类型。

答案 1 :(得分:3)

完全取决于具体情况。你提到xml; 在xml 中,格式通常以非文化文化表示(这意味着:。是十进制的,是数千等)。同样,xml具有日期/时间的特定表示。

如果您通过XmlWriterXElementXmlSerializer(等)构建xml,这将是自动的;如果你手工构建它可能会混淆(混合不同的表示)。

如果数据不是的格式,您可能需要将其加载到string属性(而不是float等),并且单独处理。