【问题标题】:Get decimal value from XML [duplicate]从 XML 获取十进制值 [重复]
【发布时间】:2023-03-11 19:14:01
【问题描述】:

嗯,我有一个 VB.net 代码,它从一些 XML 字段中获取值,这没问题,问题是有时值在点之后有不同的格式,所以当我尝试转换值时到一个数字,我得到一个错误的值。

我获取该字段的代码:

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

我曾经将“qnt”字段除以 100,以获得正确的值,但它不再起作用,如下所示

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

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

如果有人知道如何用 C# 解决它也没问题。

【问题讨论】:

  • 这与 XML 无关。您正在尝试使用默认语言环境解析十进制数,这显然使用 . 作为千位分隔符。不要使用Convert.ToDecimal,而是使用带有InvariantCultureInfo 的decimal.Parse,例如decimal.Parse(someText,CultureInfo.InvariantCulture)

标签: c# .net xml vb.net


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 2018-08-26
    • 1970-01-01
    • 2021-02-05
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 2013-06-16
    相关资源
    最近更新 更多