private void Read(XmlNode element, String path, bool appendPath)
{
path = appendPath ? path + "." + element.Name : path;
if (element.InnerText.Equals(element.InnerXml))
{
dictionary.Add(path, element.InnerText);
return;
}
XmlNodeList listElements = element.SelectNodes(element.FirstChild.Name);
if (listElements.Count > 1 && element.ChildNodes.Count == listElements.Count)
{//be list
ElementsAsList(element.ChildNodes, path);
}
else if (listElements.Count == 1 && element.ChildNodes.Count == 1)
{//may be list
ElementsAsList(listElements, path);//as list
Read(element.FirstChild, path, true);//as not list
}
else
{//not list
foreach (XmlNode childElement in element.ChildNodes)
{
Read(childElement, path, true);
}
}
}