Search code examples
c#xmllinq-to-xmlxmlreader

Read XML file from URL, comes up empty


I am trying to read a XML file from a URL.
The URL and file are fine, they hold currency rates.

When running the code 9 out of 10 times, no content comes back.

Here is the code:

        XDocument doc = XDocument.Load("http://www.boi.org.il/currency.xml");
        int currID = 0;
        Dictionary<int, Currency> curr; // declares the dictionary  
        curr = new Dictionary<int, Currency>();

        var data = from item in doc.Descendants("CURRENCY") // LINQ the informartion from the xml to data variable
                   select new
                   {
                       name = item.Element("NAME").Value,
                       country = item.Element("COUNTRY").Value,
                       currencyCode = item.Element("CURRENCYCODE").Value,
                       rate = Convert.ToDouble(item.Element("RATE").Value),
                       unit = Convert.ToDouble(item.Element("UNIT").Value),
                       change = Convert.ToDouble(item.Element("CHANGE").Value),
                   };

        foreach (var xn in data) // run in foreach on the data that we read from the xml and put it in a currency variable into the dictionary
        {
            Currency currency = new Currency();

            currency.Name = xn.name;
            currency.Country = xn.country;
            currency.CurrencyCode = xn.currencyCode;
            currency.Rate = Convert.ToDouble(xn.rate);
            currency.Unit = Convert.ToDouble(xn.unit);
            currency.Change = Convert.ToDouble(xn.change);

            curr.Add(currID, currency);
            currID++;
        }

        foreach (KeyValuePair<int, Currency> entry in curr)
        {
            Console.WriteLine(entry.Value.CurrencyCode);
        }

I have edited the code to see the output, I get nothing. What am I doing wrong?

Thanks in advance.


Solution

  • @David Faiz It Works!

        XmlDocument xDoc = new XmlDocument(); 
        xDoc.Load(@"http://www.boi.org.il//currency.xml"); 
        XmlNodeList xmllist = xDoc.GetElementsByTagName("CURRENCIES"); 
        Console.WriteLine(xmllist.Count);
    

    You have must add // slashes in the URL. That is why u got the 'xmllist.Count' as Zero.