.NET 4.x Конвертация XmlNode.InnerText в Double - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Пишу библиотеку для конвертации валют, столкнулся с не выполнением условия тут:
if (Double.TryParse(node.ChildNodes[4].InnerText, out course) ;
хотя числовое значение в node.ChildNodes[4].InnerText присутствует.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace ConverterLibrary
{
    public class CurrencyConverter
    {
        /// <summary>
        /// Gets courses in XML for all currency
        /// </summary>
        private static XmlDocument GetAllCourses()
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load("http://pfsoft.com.ua/service/currency/");
                return doc;
            }
            catch (Exception e)
            {
               throw new Exception(e.Message); 
            }
        }
 
        private static double GetCourse(string curr_name)
        {
            double course = 0;     
            XmlDocument XmlDoc = GetAllCourses();
 
            foreach (XmlNode node in XmlDoc.SelectNodes("/ValCurs/Valute"))  
            {
                if (node.ChildNodes[1].InnerText == curr_name) // get CharCode
                {
                    throw new Exception(node.ChildNodes[4].InnerText);  // = 2.8005 но условие не выполняется все равно
                    if (Double.TryParse(node.ChildNodes[4].InnerText, out course)) // get the 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;
                    }
                }  
            }
            return course;  // 0;
        }
        public static double Convert(double val, string curr_name1, string curr_name2 = "")
        {
            double course, result;
 
            if (val < 1) 
                throw new Exception("Error! Сurrency value < 1!");
 
            if (curr_name1 == "UAH")
                course = GetCourse(curr_name2);
            else 
                if (curr_name2 == "UAH" || curr_name2 == "")
                    course = GetCourse(curr_name1);
                else throw new Exception("Error! One of the parameters must be UAH.");
 
            result = (val * course) / 100;
            if (result == 0)
                throw new Exception("Error! Unknown currency CharCode.");
 
            return result;
        }
        
    }
}

Решение задачи: «.NET 4.x Конвертация XmlNode.InnerText в Double»

textual
Листинг программы
 if (Double.TryParse(node.ChildNodes[4].InnerText, NumberStyles.Any, CultureInfo.InvariantCulture, out course))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5