using System.Collections.Generic;
using System.Xml.Serialization;
public static class AdifDictionaryExtensions
public static Dictionary<decimal, string> ExtractAdifDictionary(TextReader reader)
Dictionary<decimal, string> dict = new Dictionary<decimal, string>();
using (var xmlReader = XmlReader.Create(reader))
var xd = XDocument.Load(xmlReader);
var ns1 = (XNamespace)"http://www.clublog.org/cty/v1.0";
var ns2 = (XNamespace)"https://clublog.org/cty/v1.0";
.Elements("entities", ns1, ns2).Single()
.Elements("entity", ns1, ns2)
x => (decimal)x.Elements("adif", ns1, ns2).Single(),
x => x.Elements("name", ns1, ns2).Single().Value);
public static class XContainerExtensions
public static IEnumerable<XElement> Elements(this XContainer container, string localName, XNamespace nameSpace, params XNamespace[] additionalNamespaces)
if (container == null || localName == null)
throw new ArgumentNullException();
var names = new[] { nameSpace }.Concat(additionalNamespaces).Select(ns => ns + localName).ToArray();
return container.Elements().Where(e => names.Any(n => n == e.Name));
public static void Test()
foreach (var xml in GetXml())
Console.WriteLine("\nInput XML: ");
var dict = AdifDictionaryExtensions.ExtractAdifDictionary(new StringReader(xml));
Console.WriteLine("Deserialized dictionary: ");
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(dict, Newtonsoft.Json.Formatting.Indented));
static IEnumerable<string> GetXml()
var xml = @"<clublog date=""2018-02-13T21:30:11+00:00""
xmlns=""https://clublog.org/cty/v1.0"">
<end>1991-03-30T23:59:59+00:00</end>
<!--Additional entities omitted-->
return new[] { xml, xml.Replace(@"https://clublog.org/cty/v1.0", @"http://www.clublog.org/cty/v1.0")};
public class AssertionFailedException : System.Exception
public AssertionFailedException() : base() { }
public AssertionFailedException(string s) : base(s) { }
public static class Assert
public static void IsTrue(bool value)
public static void IsTrue(bool value, string message)
throw new AssertionFailedException(message ?? "failed");
public static void Main()
Console.WriteLine("Environment version: " + Environment.Version);
Console.WriteLine("Uncaught exception: ");