/// <summary> /// Пробегаемся по всем звеньям xml и сливаем их в одно общее правило /// </summary> /// <param name="xmlResult">Результирующая xml</param> /// <param name="xmlCurrent">Текущая xml</param> private static void XmlNodeProceed(XmlNode xmlResult, XmlNode xmlCurrent) { foreach (XmlNode xmlNode in xmlCurrent.ChildNodes) { if (!xmlNode.HasChildNodes) { if (xmlNode.ParentNode == null) { continue; } var propertie = MainSettings.GetPropertie(xmlNode.ParentNode.Name); if (propertie != null && MainSettings.CanMergeProperties(propertie.Name)) { xmlResult.InnerText = MainSettings.MergeValues(xmlResult.InnerText, xmlNode.InnerText); } } else { var resultNode = xmlResult.SelectSingleNode(xmlNode.Name); if (resultNode == null) { if (xmlResult.OwnerDocument == null) { continue; } var xmlNew = xmlResult.OwnerDocument.CreateElement(xmlNode.Name); xmlNew.InnerXml = xmlNode.InnerXml; xmlResult.AppendChild(xmlNew); continue; } XmlNodeProceed(resultNode, xmlNode); } } }