2017-04-10 68 views
0

那么,我有一个VB.net代码,它从一些XML fiels中获得值,没有问题,问题是有时值有不同的格式,点之后,所以当我尝试将该值转换为一个数字,我得到一个错误的值。从XML获取十进制值

我的代码来获取领域:

qntXml As XmlNodeList = docXml.GetElementsByTagName("qCom") 
qnt = Convert.ToDecimal(quantidadeXml(0).InnerText) 

我用100分的“QNT”领域,以获得正确的值,但它不工作了,因为你可以看到下面

<qCom>380.00</qCom> 
<qCom>170.0000</qCom> 

我得到“完整”数字,例如38000,而我应该得到380,00。

如果有人有一个想法如何用C#解决它也没有问题。

+0

此无关的XML。你正试图用默认语言环境解析一个十进制数,这显然使用'.'作为千位分隔符。不要使用Convert.ToDecimal,而要在InvariantCultureInfo中使用'decimal.Parse',例如'decimal.Parse(someText,CultureInfo.InvariantCulture)' –

回答

0

Convert.ToDecimal使用CurrentCulture Property

所以,你可以转换成有为逗号:

qntXml As XmlNodeList = docXml.GetElementsByTagName("qCom") 
var clone = (CultureInfo)CultureInfo.CurrentCulture.Clone(); 
clone.NumberFormat.NumberDecimalSeparator = "."; 
qnt = Convert.ToDecimal(quantidadeXml(0).InnerText, clone);