Is decimal separator ('.' or ',' ) depends of CurrentCulture
?
I have a problem in serialization XML
.
When I type ',' as separator, I have an exception. (Culture is setted as DE-de)
Regards
开发者_开发百科example ( TestProperties is my own class for testing)
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; }
}
}
Decimal separator is determined by the current culture, however, for XML Serialization, the current culture is not taken into account. XML convention will have to be used; decimal separator in XML will always be a point.
If you're building the XML by hand, you should use the XMLConvert
class to make sure that all data-types are formatted correctly in the XML.
It depends entirely on the context. You mention xml; within xml, the format is usually represented in a non-cultural culture (which means: . is decimal and , is thousands etc). Similarly, xml has specific representations for dates/times.
If you are building your xml via XmlWriter
, XElement
, XmlSerializer
(etc) this will be automatic; if you are building it by hand it could well be confused (a mix of different representations).
If the data is not in the expected format, you might have to load it into a string
property (rather than, say, a float
etc), and process it separately.
精彩评论