private void FillChildNodes(XContainer destinationContainer, XContainer sourceContainer, XmlElement xmlElement)
{
var newContainer = sourceContainer.Clone();
newContainer.Containers.Clear();
ResolveAttributes(newContainer, xmlElement);
ResolveElements(newContainer, xmlElement);
newContainer.Name = xmlElement.Name;
if (xmlElement.ChildNodes.Count == 1)
{
if (xmlElement.ChildNodes[0] is XmlText)
{
newContainer.Value = xmlElement.InnerText;
}
}
newContainer.ParentContainer = destinationContainer;
newContainer.Id = newContainer.ParentContainer.Containers.Count + 1;
newContainer.ParentContainer.Containers.Add(newContainer);
foreach (var element in xmlElement.ChildNodes)
{
if (!(element is XmlComment))
{
foreach (var xContainer in sourceContainer.Containers)
{
var name = ((XmlElement)element).Name;
if (xContainer.Name == name)
{
FillChildNodes(newContainer, xContainer, (XmlElement)element);
}
}
}
}
}