private static void ExtractFromTraidingDetailsRoot(EtfConverter etfConverter, XElement root) { //structure: exchange | exchange code | currency trading | Bloomberg code // London Stock Exchange |ISPY, | GBP | ISPY // Borsa Italiana |ISPY, | EUR | LN // Deutsche Börse |USPLY | EUR | ISPY IM var exchange = new StringBuilder(); var exchangeCode = new StringBuilder(); var currencyTrading = new StringBuilder(); var bloombergCode = new StringBuilder(); foreach (var tr in root.Descendants("tr")) { var tds = tr.Descendants("td"); var xElements = tds as IList<XElement> ?? tds.ToList(); if (xElements.Count < 4) continue; exchange.AppendFormat("{0}, ", xElements[0].Value); exchangeCode.AppendFormat("{0}, ", xElements[1].Value); currencyTrading.AppendFormat("{0}, ", xElements[2].Value); bloombergCode.AppendFormat("{0}, ", xElements[4].Value); } etfConverter.SetProperty("Exchange", exchange.ToString()); etfConverter.SetProperty("Exchange Code", exchangeCode.ToString()); etfConverter.SetProperty("Currency (trading)", currencyTrading.ToString()); etfConverter.SetProperty("Bloomberg Code", bloombergCode.ToString()); }