gpt4 book ai didi

c# - 在 C# 中使用德语小数分隔符对双值进行 XML 反序列化

转载 作者:数据小太阳 更新时间:2023-10-29 01:43:01 27 4
gpt4 key购买 nike

我正在尝试反序列化 Movie来自“德语”xml 字符串的对象:

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);

这里是Movie引用类:

[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();
}

}

只要我放一个<price>作为1.99它工作得很好。当我使用德语德语小数点分隔符时 1,99它不再工作了。

请多多指教

最佳答案

如前所述,这根本不是在 XML 中表示数值的有效方式。不过对于字符串来说没问题。你可以这样做:

[XmlIgnore]
public decimal Price {get;set;}

[XmlElement("price")]
public string PriceFormatted {
get { return Price.ToString(...); }
set { Price = decimal.Parse(value, ...); }
}

其中“...”代表您选择的格式说明符和 CultureInfo

关于c# - 在 C# 中使用德语小数分隔符对双值进行 XML 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8463733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com