I am trying to deserialize a Movie
object from a "German" xml string:
string inputString = "<?xml version=\"1.0\"?>" + "<movie title=\"Great Bollywood Stuff\">" + "<rating>5</rating>" + "<price>1,99</price>" // <-- Price with German decimal separator! + "</movie>"; XmlSerializer movieSerializer = new XmlSerializer(typeof(Movie)); Movie inputMovie; using (StringReader sr = new StringReader(inputString)) { inputMovie = (Movie)movieSerializer.Deserialize(sr); } System.Console.WriteLine(inputMovie);
here's the Movie
class for reference:
[XmlRoot("movie")] public class Movie { [XmlAttribute("title")] public string Title { get; set; } [XmlElement("rating")] public int Rating { get; set; } [XmlElement("price")] public double Price { get; set; } public Movie() { } public Movie(string title, int rating, double price) { this.Title = title; this.Rating = rating; this.Price = price; } public override string ToString() { StringBuilder sb = new StringBuilder("Movie "); sb.Append("[Title=").Append(this.Title); sb.Append(", Rating=").Append(this.Rating); sb.Append(", Price=").Append(this.Price); sb.Append("]"); return sb.ToString(); } }
as soon as I set <price>
to 1.99
, it works fine. when I use the German German decimal separator 1,99
, it no longer works.
consult
Daniel Kutik
source share