Csharp/CSharp Tutorial/XML/Xml Tree
Версия от 15:31, 26 мая 2010; (обсуждение)
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());
}
}