decimal.Parse(string)
uses the current system format; thus
decimal.Parse(resourceElementVincent.Elements("field")
.Single(fieldElement => fieldElement.Attribute("name").Value == "age")
.Value)
will return zero when Vincent's age is set to 0.27 and the current culture is Italian (where the NumberDecimalSeparator is a comma).
However, you could use the decimal.Parse(string, IFormatProvider)
method instead, passing the InvariantCulture
(where the NumberDecimalSeparator is a period):
decimal.Parse(resourceElementVincent.Elements("field")
.Single(fieldElement => fieldElement.Attribute("name").Value == "age")
.Value, CultureInfo.InvariantCulture);
MSDN documentation here.