Advertisement
kijato

c#_xml_to_treeview

Jan 28th, 2024 (edited)
816
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.21 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Windows.Forms;
  4. using System.Drawing;
  5. using System.Xml;
  6.  
  7. namespace XmlToTreeview
  8. {
  9.     public class Form1 : Form
  10.     {
  11.         TreeView treeView1 = new TreeView();
  12.         Boolean expanded = true;
  13.  
  14.         public static void Main(string[] args)
  15.         {
  16.             try
  17.             {
  18.                 Application.Run(new Form1());
  19.             }
  20.             catch (Exception e)
  21.             {
  22.                 Console.WriteLine(e.Message);
  23.             }
  24.         }
  25.  
  26.         // https://pastebin.com/PGVHnWqs
  27.         /*
  28.         https://ourcodeworld.com/articles/read/913/how-to-render-a-xml-file-string-into-a-treeview-component-in-winforms-with-csharp
  29.         https://stackoverflow.com/questions/8503521/populating-treeview-from-xml
  30.         https://stackoverflow.com/questions/28491166/parse-xml-to-treeview-list
  31.         http://www.thescarms.com/dotnet/XMLTreeview.aspx
  32.         */
  33.  
  34.         public Form1()
  35.         {
  36.             FileStream fs = new FileStream(@"xml_to_treeview.xml", FileMode.Open, FileAccess.Read);
  37.  
  38.             Size = new Size(300, 600);
  39.             Text = fs.Name;
  40.  
  41.             Controls.Add(treeView1);
  42.             treeView1.Dock = DockStyle.Fill;
  43.             treeView1.NodeMouseDoubleClick += new TreeNodeMouseClickEventHandler(TreeView1NodeMouseDoubleClick);
  44.  
  45.             XmlDocument xmlDoc = new XmlDocument();
  46.             XmlNode xmlnode;
  47.            
  48.             xmlDoc.Load(fs);
  49.             xmlnode = xmlDoc.ChildNodes[1];
  50.  
  51.            
  52.             treeView1.Nodes.Clear();
  53.             treeView1.Nodes.Add(new TreeNode(xmlDoc.DocumentElement.Name));
  54.  
  55.             AddNode(xmlnode, treeView1.Nodes[treeView1.Nodes.Count - 1]);
  56.  
  57.             fs.Close();
  58.         }
  59.  
  60.         private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
  61.         {
  62.             // Attribútumok listázása:
  63.             if (inXmlNode.Attributes != null)
  64.             {
  65.                 foreach (XmlAttribute attrib in inXmlNode.Attributes)
  66.                 {
  67.                     inTreeNode.Nodes.Add(new TreeNode("[ " + attrib.Name + "= '" + attrib.Value + "' ]"));
  68.                 }
  69.             }
  70.  
  71.             // Elemek listázása:
  72.             // Az '... || inXmlNode.InnerText.Trim().Equals("") ' nélkül az üres elem tartalma, azaz a "" felülírja az elem nevét a fában!
  73.             if (inXmlNode.HasChildNodes || inXmlNode.InnerText.Trim().Equals(""))
  74.             {
  75.                 foreach (XmlNode xxNode in inXmlNode.ChildNodes)
  76.                 {
  77.                     inTreeNode.Nodes.Add(new TreeNode(xxNode.Name));
  78.                     AddNode(xxNode, inTreeNode.Nodes[inTreeNode.Nodes.Count - 1]);
  79.                 }
  80.             }
  81.             else
  82.             {
  83.                 inTreeNode.Text = "'" + inXmlNode.InnerText.ToString() + "'";
  84.             }
  85.         }
  86.  
  87.         private void TreeView1NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
  88.         {
  89.             treeView1.BeginUpdate();
  90.             if (expanded)
  91.             {
  92.                 treeView1.CollapseAll();
  93.                 expanded = false;
  94.             }
  95.             else
  96.             {
  97.                 treeView1.ExpandAll();
  98.                 expanded = true;
  99.             }
  100.             treeView1.EndUpdate();
  101.         }
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement