2011-05-24 56 views
2

我想知道是否有任何簡單的方法使用XmlSerialier以逗號小數點分隔符來反序列化十進制數? 我從其他軟件獲取xml格式的導出數據,xml文件中的所有數字(價格,數量,折扣和許多更多)都以逗號作爲小數點分隔符。XmlSerializer用逗號(,)反序列化十進制小數點符號

下面是簡單的例子就是我試圖做:

比方說,有產品類名稱和價格:

[Serializable] 
public class Product 
{ 
    public string Name { get; set; } 
    public decimal Price { get; set; } 
} 

,我有XML ...

string xmlExample = "<Product><Name>Coca Cola, 2L</Name><Price>3,50</Price></Product>"; 

當我試圖反序列化該XML ...

XmlSerializer serializer = new XmlSerializer(typeof(Product)); 
StringReader stringReader = new StringReader(xmlExample); 
Product product = serializer.Deserialize(stringReader) as Product; //<-- Error here 

我遇到錯誤XML文檔中存在錯誤(1,57)。

當Price in xml是3.50時Everythig可以正常工作。

我知道我可以將價格特性更改爲sting和TryParse十進制,但也許有更好的解決方案(例如切換文化)?

任何建議,解決方案和意見表示讚賞。

更新: 忘了提及我目前的文化設置已經使用逗號作爲小數點符號。

回答

3

我懷疑有一個內置的方式,因爲與不使用週期數的XML文檔不是XML文檔:) OTOH,這個答案有不少可能的解決方案:

Summing numbers with comma as decimal separator in XSLT?

+0

是我知道xml standarts說dot是十進制符號,但事實是,我得到了基於xml文件的非standarts。因此,我正在尋找解決方法...感謝鏈接,我會檢查它。 – Reniuz 2011-05-24 20:36:27