Csharp/CSharp Tutorial/XML/Xml Tree

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Display XML Tree

<source lang="csharp">using System; using System.Collections.Generic; using System.Windows.Forms; using System.Xml; using System.IO;

public partial class XmlTreeDisplay : Form {

   public XmlTreeDisplay()
   {
       InitializeComponent();
   }
   private void XmlTreeDisplay_Load(object sender, EventArgs e)
   {
       txtXmlFile.Text = Path.rubine(Application.StartupPath, @"test.xml");
   }
   private void cmdLoad_Click(object sender, System.EventArgs e)
   {
       treeXml.Nodes.Clear();
       XmlDocument doc = new XmlDocument();
       try
       {
           doc.Load(txtXmlFile.Text);
       }
       catch (Exception err)
       {
           MessageBox.Show(err.Message);
           return;
       }
       ConvertXmlNodeToTreeNode(doc, treeXml.Nodes);
       treeXml.Nodes[0].ExpandAll();
   }
   private void ConvertXmlNodeToTreeNode(XmlNode xmlNode, TreeNodeCollection treeNodes)
   {
       // Add a TreeNode node that represents this XmlNode.
       TreeNode newTreeNode = treeNodes.Add(xmlNode.Name);
       // Customize the TreeNode text based on the XmlNode
       // type and content.
       switch (xmlNode.NodeType)
       {
           case XmlNodeType.ProcessingInstruction:
           case XmlNodeType.XmlDeclaration:
               newTreeNode.Text = "<?" + xmlNode.Name + " " + xmlNode.Value + "?>";
               break;
           case XmlNodeType.Element:
               newTreeNode.Text = "<" + xmlNode.Name + ">";
               break;
           case XmlNodeType.Attribute:
               newTreeNode.Text = "ATTRIBUTE: " + xmlNode.Name;
               break;
           case XmlNodeType.Text:
           case XmlNodeType.CDATA:
               newTreeNode.Text = xmlNode.Value;
               break;
           case XmlNodeType.rument:
               newTreeNode.Text = "";
               break;
       }
       if (xmlNode.Attributes != null)
       {
           foreach (XmlAttribute attribute in xmlNode.Attributes)
           {
               ConvertXmlNodeToTreeNode(attribute, newTreeNode.Nodes);
           }
       }
       foreach (XmlNode childNode in xmlNode.ChildNodes)
       {
           ConvertXmlNodeToTreeNode(childNode, newTreeNode.Nodes);
       }
   }

} partial class XmlTreeDisplay {

   private System.ruponentModel.IContainer components = null;
   protected override void Dispose(bool disposing)
   {
       if (disposing && (components != null))
       {
           components.Dispose();
       }
       base.Dispose(disposing);
   }
   #region Windows Form Designer generated code
   private void InitializeComponent()
   {
       this.label1 = new System.Windows.Forms.Label();
       this.cmdLoad = new System.Windows.Forms.Button();
       this.txtXmlFile = new System.Windows.Forms.TextBox();
       this.treeXml = new System.Windows.Forms.TreeView();
       this.SuspendLayout();
       // 
       // label1
       // 
       this.label1.Location = new System.Drawing.Point(9, 11);
       this.label1.Name = "label1";
       this.label1.Size = new System.Drawing.Size(28, 16);
       this.label1.TabIndex = 7;
       this.label1.Text = "File:";
       // 
       // cmdLoad
       // 
       this.cmdLoad.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
       this.cmdLoad.Location = new System.Drawing.Point(514, 5);
       this.cmdLoad.Name = "cmdLoad";
       this.cmdLoad.Size = new System.Drawing.Size(56, 24);
       this.cmdLoad.TabIndex = 6;
       this.cmdLoad.Text = "Load";
       this.cmdLoad.Click += new System.EventHandler(this.cmdLoad_Click);
       // 
       // txtXmlFile
       // 
       this.txtXmlFile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.txtXmlFile.Location = new System.Drawing.Point(41, 8);
       this.txtXmlFile.Name = "txtXmlFile";
       this.txtXmlFile.Size = new System.Drawing.Size(468, 21);
       this.txtXmlFile.TabIndex = 5;
       // 
       // treeXml
       // 
       this.treeXml.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.treeXml.Location = new System.Drawing.Point(5, 37);
       this.treeXml.Name = "treeXml";
       this.treeXml.Size = new System.Drawing.Size(566, 264);
       this.treeXml.TabIndex = 4;
       // 
       // XmlTreeDisplay
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.ClientSize = new System.Drawing.Size(583, 314);
       this.Controls.Add(this.label1);
       this.Controls.Add(this.cmdLoad);
       this.Controls.Add(this.txtXmlFile);
       this.Controls.Add(this.treeXml);
       this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
       this.Name = "XmlTreeDisplay";
       this.Text = "XmlTreeDisplay";
       this.Load += new System.EventHandler(this.XmlTreeDisplay_Load);
       this.ResumeLayout(false);
       this.PerformLayout();
   }
   #endregion
   private System.Windows.Forms.Label label1;
   private System.Windows.Forms.Button cmdLoad;
   private System.Windows.Forms.TextBox txtXmlFile;
   private System.Windows.Forms.TreeView treeXml;

} static class Program {

 /// <summary>
 /// The main entry point for the application.
 /// </summary>
 [STAThread]
 static void Main()
 {
   Application.EnableVisualStyles();
   Application.Run(new XmlTreeDisplay());
 }

}</source>

Load Xml to TreeView

<source lang="csharp">using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Xml;

   public class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
       private void button1_Click(object sender, EventArgs e)
       {
           XmlDocument doc = new XmlDocument();
           doc.Load("employees.xml");
           TreeNode root=new TreeNode(doc.DocumentElement.Name);
           treeView1.Nodes.Add(root);
           foreach (XmlNode node in doc.DocumentElement.ChildNodes)
           {
               TreeNode employee = new TreeNode("Employee ID :" + node.Attributes["employeeid"].Value);
               root.Nodes.Add(employee);
               if (node.HasChildNodes)
               {
                   foreach (XmlNode childnode in node.ChildNodes)
                   {
                       TreeNode n2 = new TreeNode(childnode.Name + " : "+ childnode.InnerText);
                       employee.Nodes.Add(n2);
                   }
               }
           }
       }
       private void InitializeComponent()
       {
           this.treeView1 = new System.Windows.Forms.TreeView();
           this.button1 = new System.Windows.Forms.Button();
           this.SuspendLayout();
           // 
           // treeView1
           // 
           this.treeView1.Dock = System.Windows.Forms.DockStyle.Top;
           this.treeView1.Location = new System.Drawing.Point(0, 0);
           this.treeView1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
           this.treeView1.Name = "treeView1";
           this.treeView1.Size = new System.Drawing.Size(389, 304);
           this.treeView1.TabIndex = 0;
           // 
           // button1
           // 
           this.button1.Location = new System.Drawing.Point(136, 320);
           this.button1.Name = "button1";
           this.button1.Size = new System.Drawing.Size(104, 32);
           this.button1.TabIndex = 1;
           this.button1.Text = "Load Tree";
           this.button1.UseVisualStyleBackColor = true;
           this.button1.Click += new System.EventHandler(this.button1_Click);
           // 
           // Form1
           // 
           this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
           this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
           this.ClientSize = new System.Drawing.Size(389, 362);
           this.Controls.Add(this.button1);
           this.Controls.Add(this.treeView1);
           this.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
           this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
           this.Name = "Form1";
           this.Text = "Form1";
           this.ResumeLayout(false);
       }
       private System.Windows.Forms.TreeView treeView1;
       private System.Windows.Forms.Button button1;
       [STAThread]
       static void Main()
       {
           Application.EnableVisualStyles();
           Application.SetCompatibleTextRenderingDefault(false);
           Application.Run(new Form1());
       }
   }</source>