/// <summary>
/// Build an expando from an XElement
/// </summary>
/// <param name="el"></param>
/// <returns></returns>
public static ElasticObject ElasticFromXElement(XElement el)
{
var exp = new ElasticObject();
if (!string.IsNullOrEmpty(el.Value))
exp.InternalValue = el.Value;
exp.InternalName = el.Name.LocalName;
foreach (var a in el.Attributes())
exp.CreateOrGetAttribute(a.Name.LocalName, a.Value);
var textNode= el.Nodes().FirstOrDefault();
if (textNode is XText)
{
exp.InternalContent = textNode.ToString();
}
foreach (var c in el.Elements())
{
var child = ElasticFromXElement(c);
child.InternalParent = exp;
exp.AddElement(child);
}
return exp;
}