小数点分隔符('。'或',')是否取决于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; }
}
}
答案 0 :(得分:4)
十进制分隔符由当前文化决定,但是,对于XML序列化,不考虑当前的文化。必须使用XML约定; XML中的小数分隔符始终是一个点。
如果您手动构建XML,则应使用XMLConvert
类来确保在XML中正确格式化所有数据类型。
答案 1 :(得分:3)
完全取决于具体情况。你提到xml; 在xml 中,格式通常以非文化文化表示(这意味着:。是十进制的,是数千等)。同样,xml具有日期/时间的特定表示。
如果您通过XmlWriter
,XElement
,XmlSerializer
(等)构建xml,这将是自动的;如果你手工构建它可能会混淆(混合不同的表示)。
如果数据不是的格式,您可能需要将其加载到string
属性(而不是float
等),并且单独处理。