XElement と Culture に問題があります。
私の地元の文化はフランス語です。浮動小数点値は、ポイントの代わりにカンマで記述されます。
Console.WriteLine(1.1d);
//1,1
ただし、XElement に double を入れると、アメリカン フォーマットで格納されます。
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;