• C# XMLTree


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System.Windows.Forms;

    namespace WindowsFormsApplication7
    {

            class TreeExXMLCls
            {
                private TreeView thetreeview;
                private string xmlfilepath;
                XmlTextWriter textWriter;
                XmlNode Xmlroot;
                XmlDocument textdoc;

                public TreeExXMLCls()
                {
                    //----构造函数  
                    textdoc = new XmlDocument();

                }

                ~TreeExXMLCls()
                {
                    //----析构函数  
                }

                #region 遍历treeview并实现向XML的转化
                /// <summary>     
                /// 遍历treeview并实现向XML的转化  
                /// </summary>     
                /// <param name="TheTreeView">树控件对象</param>     
                /// <param name="XMLFilePath">XML输出路径</param>     
                /// <returns>0表示函数顺利执行</returns>     

                public int TreeToXML(TreeView TheTreeView, string XMLFilePath)
                {
                    //-------初始化转换环境变量  
                    thetreeview = TheTreeView;
                    xmlfilepath = XMLFilePath;
                    textWriter = new XmlTextWriter(xmlfilepath, null);

                    //-------创建XML写操作对象  
                    textWriter.Formatting = Formatting.Indented;

                    //-------开始写过程,调用WriteStartDocument方法  
                    textWriter.WriteStartDocument();

                    //-------写入说明  
                    textWriter.WriteComment("this XML is created from a tree");

                    //-------添加第一个根节点  
                    textWriter.WriteStartElement("TreeExXMLCls");
                    textWriter.WriteEndElement();

                    //------ 写文档结束,调用WriteEndDocument方法  
                    textWriter.WriteEndDocument();

                    //-----关闭输入流  
                    textWriter.Close();

                    //-------创建XMLDocument对象  
                    textdoc.Load(xmlfilepath);

                    //------选中根节点  
                    XmlElement Xmlnode = textdoc.CreateElement(thetreeview.Nodes[0].Text);
                    Xmlroot = textdoc.SelectSingleNode("TreeExXMLCls");

                    //------遍历原treeview控件,并生成相应的XML  
                    TransTreeSav(thetreeview.Nodes, (XmlElement)Xmlroot);
                    return 0;
                }

                private int TransTreeSav(TreeNodeCollection nodes, XmlElement ParXmlnode)
                {

                    //-------遍历树的各个故障节点,同时添加节点至XML  
                    XmlElement xmlnode;
                    Xmlroot = textdoc.SelectSingleNode("TreeExXMLCls");

                    foreach (TreeNode node in nodes)
                    {
                        xmlnode = textdoc.CreateElement(node.Text);
                        ParXmlnode.AppendChild(xmlnode);

                        if (node.Nodes.Count > 0)
                        {
                            TransTreeSav(node.Nodes, xmlnode);
                        }
                    }
                    textdoc.Save(xmlfilepath);
                    return 0;
                }

                #endregion

                #region 遍历XML并实现向tree的转化
                /// <summary>     
                /// 遍历treeview并实现向XML的转化  
                /// </summary>     
                /// <param name="XMLFilePath">XML输出路径</param>     
                /// <param name="TheTreeView">树控件对象</param>     
                /// <returns>0表示函数顺利执行</returns>     

                public int XMLToTree(string XMLFilePath, TreeView TheTreeView)
                {
                    //-------重新初始化转换环境变量  
                    thetreeview = TheTreeView;
                    xmlfilepath = XMLFilePath;

                    //-------重新对XMLDocument对象赋值  
                    textdoc.Load(xmlfilepath);

                    XmlNode root = textdoc.SelectSingleNode("Targ");//读的xml的节点名

                    foreach (XmlNode subXmlnod in root.ChildNodes)
                    {
                        TreeNode trerotnod = new TreeNode();
                        trerotnod.Text = subXmlnod.Name;
                        thetreeview.Nodes.Add(trerotnod);
                        TransXML(subXmlnod.ChildNodes, trerotnod);

                    }
                    return 0;
                }

                private int TransXML(XmlNodeList Xmlnodes, TreeNode partrenod)
                {
                    //------遍历XML中的所有节点,仿照treeview节点遍历函数  
                    foreach (XmlNode xmlnod in Xmlnodes)
                    {
                        TreeNode subtrnod = new TreeNode();
                        subtrnod.Text = xmlnod.Name + xmlnod.Value ;
                        partrenod.Nodes.Add(subtrnod);

                        if (xmlnod.ChildNodes.Count > 0)
                        {
                            TransXML(xmlnod.ChildNodes, subtrnod);
                        }
                    }
                    return 0;
                }
                #endregion


            }


    }

    <?xml version="1.0" encoding="utf-8" ?>

    <Targ>

      <施工图>
        <SubType>
          <SS1/>
        </SubType>
      </施工图>


      <完工图>
        <SubType>
          <A/>
          <A/>
          <A/>
        </SubType>
      </完工图>

    </Targ>

    TREE2 :

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;
    using System.IO;
    using System.Threading;
    using System.Globalization;
    using System.Xml;


    namespace WindowsFormsApplication7
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
              
            }

            private void button1_Click(object sender, EventArgs e)
            {
                //XmlReader xn = XmlReader.Create(@"..\..\XML.xml");

                TreeExXMLCls a = new TreeExXMLCls();
                a.XMLToTree(@"..\..\XML.xml", treeView1);

            }


            private void populateTreeview()
            {
                OpenFileDialog dlg = new OpenFileDialog();
                dlg.Title = "Open XML Document";
                dlg.Filter = "XML Files (*.xml)|*.xml";
                dlg.FileName = Application.StartupPath + "http://www.cnblogs.com/Mayvar/admin/file://XML.xml";
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        //Just a good practice -- change the cursor to a
                        //wait cursor while the nodes populate
                        this.Cursor = Cursors.WaitCursor;
                        //First, we'll load the Xml document
                        XmlDocument xDoc = new XmlDocument();
                        xDoc.Load(dlg.FileName);
                        //Now, clear out the treeview,
                        //and add the first (root) node
                        treeView2.Nodes.Clear();
                        treeView2.Nodes.Add(new
                          TreeNode(xDoc.DocumentElement.Name));
                        TreeNode tNode = new TreeNode();
                        tNode = (TreeNode)treeView2.Nodes[0];
                        //We make a call to addTreeNode,
                        //where we'll add all of our nodes
                        addTreeNode(xDoc.DocumentElement, tNode);
                        //Expand the treeview to show all nodes
                        treeView2.ExpandAll();
                    }
                    catch (XmlException xExc)
                    //Exception is thrown is there is an error in the Xml
                    {
                        MessageBox.Show(xExc.Message);
                    }
                    catch (Exception ex) //General exception
                    {
                        MessageBox.Show(ex.Message);
                    }
                    finally
                    {
                        this.Cursor = Cursors.Default; //Change the cursor back
                    }
                }
            }

            private void addTreeNode(XmlNode xmlNode, TreeNode treeNode)
            {
                XmlNode xNode;
                TreeNode tNode;
                XmlNodeList xNodeList;
                if (xmlNode.HasChildNodes) //The current node has children
                {
                    xNodeList = xmlNode.ChildNodes;
                    for (int x = 0; x <= xNodeList.Count - 1; x++)
                    //Loop through the child nodes
                    {
                        xNode = xmlNode.ChildNodes[x];
                        treeNode.Nodes.Add(new TreeNode(xNode.Name));
                        tNode = treeNode.Nodes[x];
                        addTreeNode(xNode, tNode);
                    }
                }
                else //No children, so add the outer xml (trimming off whitespace)
                    //treeNode.Text = xmlNode.InnerXml.Trim();
                    treeNode.Text = xmlNode.Value;
                  
            }

            private void button2_Click(object sender, EventArgs e)
            {
                populateTreeview();
            }

        }
    }


     

  • 相关阅读:
    GIT → 04:Git与代码托管平台
    GIT → 03:Git的下载和安装
    GIT → 02:Git和Svn比较
    GIT → 01:学习版本控制的原因
    GIT → 00:GIT学习大纲
    GIT → 10:基于IntelliJ IDEA的Git 操作
    GIT → 11:Git 工作流与实战演练
    GIT → 09:TortoiseGit 图形化工具
    亚马逊服务器搭建pptp方法
    Safari获取UDID需要安装.mobileconfig文件,
  • 原文地址:https://www.cnblogs.com/Mayvar/p/wanghonghua20120917.html
Copyright © 2020-2023  润新知