我遇到了 XElement 和 Culture 的问题。
我的当地文化是法语。浮点值用逗号而不是点写入。
Console.WriteLine(1.1d);
//1,1
但是,当我在 XElement 中放一个双精度时,它以美国格式存储。
XElement myXmlElement = new XElement("ADoubleElement", 1.1d);
Console.WriteLine(myXmlElement.Value);
//1.1
因此,当我尝试解析 XElement 的值时,我得到一个 FormatException。
XElement myXmlElement = new XElement("ADoubleElement", 1.1d);
double myDouble = double.Parse(myXmlElement.Value);
//Throws a FormatException
我觉得这种行为真的很奇怪。当我写 XDoucment 时,它不是在应用程序或线程的文化中编写的,而是在美国文化中编写的。我错过了什么吗?我有一些解决方法可以按照我的预期行事,但我觉得它们不是很“干净”。
//This will work
XElement myXmlElement = new XElement("ADoubleElement", 1.1d.ToString());
double myDouble = double.Parse(myXmlElement.Value);
//This will also work but if I write XElement, it will not have the correct Culture
XElement myXmlElement = new XElement("ADoubleElement", 1.1d);
double myDouble = (double)myXmlElement;