Csharp/CSharp Tutorial/XML/Xml Tree

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

Display XML Tree

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 = "<!--" + xmlNode.Value + "-->";
                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());
  }
}

Load Xml to TreeView

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());
        }
    }