gpt4 book ai didi

C# - XElement 和文化

转载 作者:太空宇宙 更新时间:2023-11-03 18:33:16 27 4
gpt4 key购买 nike

我在 XElement 和 Culture 方面遇到问题。

我的本​​地文化是法语。 float 值用逗号而不是点书写。

Console.WriteLine(1.1d);
//1,1

但是,当我将 double 放入 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;

最佳答案

XML 规范描述了数据应该如何格式化,这就是为什么 XElement 不使用您的文化 - 它遵循 XML 规范(实际上可能与 InvariantCulture 相同)

这也是为什么将 XElement 转换为 double 有效而 double.Parse 无效的原因:它遵循 XML 规范格式而不是本地格式。

关于C# - XElement 和文化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19406826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com