Exemplo n.º 1
0
 /// <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);
         }
     }
 }