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内では、形式は通常、非文化的文化で表されます(つまり、。は10進数で、は数千などです)。同様に、xmlには日付/時刻の特定の表現があります。

XmlWriter、、 (など)を介してxmlを構築している場合XElementXmlSerializerこれは自動的に行われます。手作業で作成している場合は、混乱する可能性があります(さまざまな表現が混在しています)。

データが期待される形式でないstring場合は、データをプロパティにロードして(たとえば、などではなくfloat)、個別に処理する必要がある場合があります。

于 2011-09-09T08:37:30.783 に答える