الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

xml in treeview

مغلق
بدأه web.pro في 23 ديسمبر 2006 · 1 رد · 658 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هذا الكود لقراءة ملف xmlوعرضه في treeview

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.Xml;



namespace _1_XmlTextReader

{

	public class Form1 : System.Windows.Forms.Form

	{

		private System.Windows.Forms.MainMenu mainMenu1;

		private System.Windows.Forms.MenuItem menuItem1;

		private System.Windows.Forms.MenuItem mnuOpen;

		private System.Windows.Forms.MenuItem menuItem3;

		private System.Windows.Forms.TreeView tvXML;

		private System.Windows.Forms.OpenFileDialog openFileDialog1;

		private System.Windows.Forms.ListView lvAttributes;

		private System.Windows.Forms.ColumnHeader columnHeader1;

		private System.Windows.Forms.ColumnHeader columnHeader2;

		private System.Windows.Forms.Label label1;

		private System.Windows.Forms.Label lblTextNode;



		private System.ComponentModel.Container components = null;



		public Form1()

		{

			InitializeComponent();

		}



		protected override void Dispose( bool disposing )

		{

			if( disposing )

			{

				if (components != null)

				{

					components.Dispose();

				}

			}

			base.Dispose( disposing );

		}



		#region Windows Form Designer generated code

		#endregion



		[STAThread]

		static void Main()

		{

			Application.Run(new Form1());

		}



		private void mnuOpen_Click(object sender, System.EventArgs e)

		{

			if( openFileDialog1.ShowDialog(this) == DialogResult.OK )

			{

				PopulateTreeView( openFileDialog1.FileName );

			}

		}



		private void PopulateTreeView( string fileName )

		{

			XmlTextReader rdr = new XmlTextReader( fileName );



			Stack nodeStack = new Stack();

			TreeNode curTreeNode = null;



			// clear tree view

			tvXML.Nodes.Clear();



			while( rdr.Read() )

			{

				switch (rdr.NodeType)

				{

						// new start element found

					case XmlNodeType.Element:

					{

						// push last element onto stack

						if( curTreeNode != null )

							nodeStack.Push( curTreeNode );



						// create new element

						curTreeNode = new TreeNode( rdr.Name );

						curTreeNode.Tag = new Hashtable();



						// populate attribute hashtable for element

						if( rdr.HasAttributes == true )

						{

							curTreeNode.ForeColor = Color.Red;

							while( rdr.MoveToNextAttribute() )

							{

								((Hashtable) curTreeNode.Tag).Add(

									rdr.Name, rdr.Value );

							}

						}



						// add element to proper place in tree.

						// Parent node is on top of stack

						if( nodeStack.Count > 0 )

							((TreeNode)nodeStack.Peek()).Nodes.Add(curTreeNode);

						else

							tvXML.Nodes.Add( curTreeNode );



						if( rdr.Name.EndsWith( "/>" ))

						{

							if( nodeStack.Count > 0 )

								curTreeNode = (TreeNode) nodeStack.Pop();

						}

						break;

					}

					case XmlNodeType.Text:

					{

						((Hashtable) curTreeNode.Tag).Add("Text", rdr.Value);

						break;

					}

					case XmlNodeType.EndElement:

					{

						// pop the last parent node off the stack

						if( nodeStack.Count > 0 )

							curTreeNode = (TreeNode) nodeStack.Pop();



						break;

					}

					default:

					{

						break;

					}

				}

			}

			rdr.Close();

		}



		private void tvXML_AfterSelect(

			object sender,

			System.Windows.Forms.TreeViewEventArgs e )

		{

			// clear attribute list view

			lvAttributes.Items.Clear();



			Hashtable atts = (Hashtable )tvXML.SelectedNode.Tag;

			IDictionaryEnumerator attsEnum = atts.GetEnumerator();



			// enumerate tree node attribute hashtable and add to listview

			while( attsEnum.MoveNext() )

			{

				if( attsEnum.Key.ToString() != "Text" )

					lvAttributes.Items.Add(new ListViewItem(

						new string[]{attsEnum.Key.ToString(),

						attsEnum.Value.ToString()} ));

			}



			if( ((Hashtable) tvXML.SelectedNode.Tag).ContainsKey( "Text" ))

			{

				lblTextNode.Text = ( ((Hashtable)

					tvXML.SelectedNode.Tag)["Text"].ToString());

			}

			else

			{

				lblTextNode.Text = "";

			}

		}

	}

}

ولكنني حصلت عليه واقوم بتطبيقه لذلك هو ينقص الى التابع initilizecomponent()

لرجاء من الاعضاء مساعدتي في كتابته لانني لاا عرف ماهو المطلوب

جزاكم الله خيرا وجعله في ميزان حسناتكم

#2

ارجو المساعدة ولو بفكرة

هذا الموضوع مغلق.

مواضيع مشابهة