3

小数分隔符('.' 或 ',' )是否取决于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; }
        }
    }
4

2 回答 2

4

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

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

于 2011-09-09T08:38:29.207 回答
3

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

如果您通过XmlWriter, XElement, XmlSerializer(etc) 构建您的 xml,这将是自动的;如果您是手动构建它,它很可能会被混淆(不同表示的混合)。

如果数据不是预期的格式,您可能必须将其加载到一个string属性中(而不是,比如说,一个float等),并单独处理它。

于 2011-09-09T08:37:30.783 回答