I want to get the specific node from my XML response using Linq My Xml:
<DataSet xmlns="http://www.bnr.ro/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bnr.ro/xsd nbrfxrates.xsd">
<Header>
<Publisher>National Bank of Romania</Publisher>
<PublishingDate>2016-12-30</PublishingDate>
<MessageType>DR</MessageType>
</Header>
<Body>
<Subject>Reference rates</Subject>
<OrigCurrency>RON</OrigCurrency>
<Cube date="2016-01-04">
<Rate currency="AED">1.1272</Rate>
<Rate currency="EUR">4.5169</Rate>
<Rate currency="BGN">2.3094</Rate>
<Rate currency="HUF" multiplier="100">1.4320</Rate>
<Rate currency="INR">0.0622</Rate>
<Rate currency="JPY" multiplier="100">3.4798</Rate>
<Rate currency="KRW" multiplier="100">0.3481</Rate>
<Rate currency="MDL">0.2107</Rate>
</Cube>
<Cube>
...
</Cube>
</Body>
</DataSet>
So i want to position on the cube which have date equals with a date paramater. Then i want to gate the rate value which has currency equals with "EUR". I am trying to do this with Linq but it's not working My Linq code:
WebClient webClient = new WebClient();
string url = "http://www.bnr.ro/files/xml/years/nbrfxrates" + year + ".xml";
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
XDocument systemXml = XDocument.Load(response.GetResponseStream());
XElement cube = (from cubeElement in systemXml.Elements("Cube")
where cubeElement.Attribute("date").ToString().Equals(data)
select cubeElement).Single();
XElement rate = (from rateElement in cube.Elements("Rate")
where rateElement.Attribute("currency").ToString().Equals("EUR")
select rateElement).Single();
My problem is that systemXml.Elements("Cube")
returns null
.
This is my url for web request http://www.bnr.ro/files/xml/years/nbrfxrates2017.xml