using System.Collections.Generic;
public static void Main()
var doc = XDocument.Load("https://prod.aws.platts.com/commodityinsights/plattscontent/en/our-methodology/glossary/glossary.xml");
var items = doc.Descendants("items").Descendants("item");
var list = new List<KeyValuePair<string, string>>();
foreach (XElement item in items)
list.Add(KeyValuePair.Create(GetValue(item.Element("itemTitle")), GetValue(item.Element("itemDescription"))));
list = list.OrderBy(x => x.Key).ToList();
Console.Write(Newtonsoft.Json.JsonConvert.SerializeObject(list));
public static string GetValue(XElement element)
return (element?.HasElements ?? false ? string.Join("", element.Nodes()) : element?.Value).Trim();