Friday, October 5, 2012

Create A Dynamic Object From An XML File

Here are a couple of simple methods that load an xml file into a dynamic object that can be used in code. At present this code does not handle xml attributes, only elements.
private static dynamic GetDynamicFromXml(string pathToXml)
{
var xdoc = XDocument.Load(pathToXml);
return GetDynamicFromNode(xdoc.Root);
}
private static dynamic GetDynamicFromNode(XElement node)
{
dynamic result = new ExpandoObject();
foreach (var elementGroup in node.Elements().GroupBy(n => n.Name.LocalName))
{
var resultDictionary = (IDictionary<String, dynamic>)result;
var values = new List<dynamic>();
foreach (var element in elementGroup)
{
values.Add((element.HasElements) ? GetDynamicFromNode(element) : element.Value.Trim());
}
resultDictionary[elementGroup.Key] = elementGroup.Count() > 1 ? values : values.FirstOrDefault();
}
return result;
}

1 comment:

  1. Oakley Titanium Glass - Titholeton's Titholeton's Titholeton
    Oakley titanium glass · Made with glass made by Titholeton Glass · Made with titanium anodizing glass made titanium trim reviews by Titholeton Glass titanium blade · Made with graphite titanium babyliss pro glass made by Titholeton Glass · Made price of titanium with glass made by Titholeton

    ReplyDelete