private void CreateNodeByXmlNode(XmlNode node, TreeNode treeNode, string xpathRoot)
 {
     try
     {
         TreeNode           treeNode2          = new TreeNode(node.Name);
         TreeXmlNodeNodeTag treeXmlNodeNodeTag = new TreeXmlNodeNodeTag();
         treeXmlNodeNodeTag.XpathExpression0 = xpathRoot + "/" + GetNamespacePrefix(node) + NormalizeXPathElementName(node.Name);
         treeXmlNodeNodeTag.XpathExpression1 = xpathRoot + "/" + GetNamespacePrefix(node) + NormalizeXPathElementName(node.Name) + "[text()='{0}']";
         treeXmlNodeNodeTag.XmlNode          = node;
         treeNode2.Tag = treeXmlNodeNodeTag;
         if (node.Attributes != null && node.Attributes.Count != 0)
         {
             TreeNode treeNode3 = new TreeNode(SR.GetString("CF_Attr2"));
             treeNode3.Tag = null;
             foreach (XmlAttribute attribute in node.Attributes)
             {
                 if (!attribute.Name.Contains("xmlns"))
                 {
                     TreeNode             treeNode4            = new TreeNode(attribute.Name + SR.GetString("CF_Equal") + attribute.Value);
                     TreeAttributeNodeTag treeAttributeNodeTag = new TreeAttributeNodeTag();
                     treeAttributeNodeTag.XpathExpression0 = xpathRoot + "/" + GetNamespacePrefix(node) + NormalizeXPathElementName(node.Name) + "[@" + GetNamespacePrefix(attribute) + NormalizeXPathElementName(attribute.Name) + "]";
                     treeAttributeNodeTag.XpathExpression1 = xpathRoot + "/" + GetNamespacePrefix(node) + NormalizeXPathElementName(node.Name) + "[@" + GetNamespacePrefix(attribute) + NormalizeXPathElementName(attribute.Name) + "='{0}']";
                     treeAttributeNodeTag.Name             = attribute.Name;
                     treeAttributeNodeTag.Value            = attribute.Value;
                     treeAttributeNodeTag.XmlNode          = node;
                     treeNode4.Tag = treeAttributeNodeTag;
                     treeNode3.Nodes.Add(treeNode4);
                 }
             }
             if (treeNode3.Nodes.Count != 0)
             {
                 treeNode2.Nodes.Add(treeNode3);
             }
         }
         if (node.HasChildNodes)
         {
             foreach (XmlNode childNode in node.ChildNodes)
             {
                 if (!(childNode.Name == "#text"))
                 {
                     CreateNodeByXmlNode(childNode, treeNode2, xpathRoot + "/" + GetNamespacePrefix(node) + NormalizeXPathElementName(node.Name));
                 }
             }
         }
         if (treeNode == null)
         {
             treeView.Nodes.Add(treeNode2);
         }
         else
         {
             treeNode.Nodes.Add(treeNode2);
         }
     }
     catch (Exception ex)
     {
         ExceptionManager.GeneralExceptionFilter(ex);
         throw new AppSettingsException(SR.GetString("CF_Err17"), ex);
     }
 }
        private void AppendTreeNode(TreeNode node)
        {
            DataGridViewRow dataGridViewRow = new DataGridViewRow();

            if (node != null && node.Tag is TreeAttributeNodeTag)
            {
                TreeAttributeNodeTag treeAttributeNodeTag = (TreeAttributeNodeTag)node.Tag;
                dataGridViewRow.CreateCells(logicGrid);
                dataGridViewRow.Cells[0].Value = treeAttributeNodeTag.XpathExpression1;
                dataGridViewRow.Cells[1].Value = SR.GetString("CF_Equal");
                dataGridViewRow.Cells[2].Value = ((!string.IsNullOrEmpty(treeAttributeNodeTag.Value)) ? treeAttributeNodeTag.Value : string.Empty);
                dataGridViewRow.Cells[3].Value = SR.GetString("CF_None");
                dataGridViewRow.Tag            = treeAttributeNodeTag;
                logicGrid.Rows.Add(dataGridViewRow);
            }
            else if (node != null && node.Tag is TreeXmlNodeNodeTag)
            {
                TreeXmlNodeNodeTag treeXmlNodeNodeTag = (TreeXmlNodeNodeTag)node.Tag;
                dataGridViewRow.CreateCells(logicGrid);
                dataGridViewRow.Cells[0].Value = treeXmlNodeNodeTag.XpathExpression0;
                dataGridViewRow.Cells[1].Value = SR.GetString("CF_Ext");
                dataGridViewRow.Cells[2].Value = treeXmlNodeNodeTag.XmlNode.InnerText;
                dataGridViewRow.Cells[3].Value = SR.GetString("CF_None");
                dataGridViewRow.Tag            = treeXmlNodeNodeTag;
                logicGrid.Rows.Add(dataGridViewRow);
            }
            if (dataGridViewRow.Cells[1].Value.ToString() == SR.GetString("CF_Ext"))
            {
                dataGridViewRow.Cells[2].ReadOnly        = true;
                dataGridViewRow.Cells[2].Style           = new DataGridViewCellStyle();
                dataGridViewRow.Cells[2].Style.ForeColor = Color.Gray;
                dataGridViewRow.Cells[3].ReadOnly        = true;
                dataGridViewRow.Cells[3].Style           = new DataGridViewCellStyle();
                dataGridViewRow.Cells[3].Style.ForeColor = Color.Gray;
            }
        }