将 XmlNode.InnerText 转换为双倍
本文关键字:转换 XmlNode InnerText | 更新日期: 2023-09-27 18:36:53
条件 Double.TryParse(node.子节点[4]。内部文本,当然)不起作用。它始终返回 0。
foreach (XmlNode node in XmlDoc.SelectNodes("/ValCurs/Valute"))
{
if (node.ChildNodes[1].InnerText == curr_name) // CharCode
{
// throw new Exception(node.ChildNodes[4].InnerText); //returns 2.085 but the next condition doesn't work
if (Double.TryParse(node.ChildNodes[4].InnerText, out course)) // course value, nominal = 100
{
if (Int32.Parse(node.ChildNodes[2].InnerText) == 10) course *= 10; //for RUB, BYR nominal = 10
if (Int32.Parse(node.ChildNodes[2].InnerText) == 1000) course /= 10; //for JPY, HUF nominal = 1000
return course;
}
}
XML 片段
<Valute id="1">
<NumCode>036</NumCode>
<CharCode>AUD</CharCode>
<Nominal>100</Nominal>
<Name>Australian dollars</Name>
<Value>1276.6300</Value>
</Valute>
TryParse 方法使用当前区域性,因此数字格式可能因系统而异。
您可以使用 TryParse 的覆盖版本,其中将 IFormatProvider 作为参数传递。文化信息.不变文化使用 .作为小数点分隔符:
Double.TryParse(node.ChildNodes[4].InnerText, CultureInfo.InvariantCulture, out course)
顺便说一句,通过将它们作为异常抛出来检查值是相当有趣的方法,但我强烈建议调试/日志记录以检查正在发生的事情。