tôi đang cố gắng để deserialize một đối tượng Movie
từ một chuỗi xml "Đức":XML-Deserialization giá trị đôi với phân cách thập phân Đức trong C#
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);
đây lớp Movie
để tham khảo:
[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();
}
}
miễn là tôi đặt <price>
làm 1.99
nó hoạt động hoàn hảo. khi tôi sử dụng dấu phân cách số thập phân Đức của Đức 1,99
, nó không hoạt động nữa.
xin vui lòng tư vấn
Bạn có lược đồ được liên kết không? Trong thông số XML-Schema, đôi cần được biểu diễn bằng a. http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#decimal, vì vậy hành vi này là do thiết kế. Bạn có thể thay thế loại Giá bằng chuỗi và sau đó có một thuộc tính không có giá trị Realprice sử dụng Double.Parse với chuỗi định dạng appropiate – rene
xml được cung cấp cho tôi ở định dạng này và tôi không thể làm gì về điều đó. nhưng cảm ơn bạn đã trả lời! –
Lưu ý quan trọng: giá trị tiền tệ hầu như luôn luôn là số thập phân, chứ không phải gấp đôi –