Mega Code Archive

 
Categories / C# / XML
 

XmlQuery Example

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Windows.Forms; using System.Xml; class Form1 : Form {     private XmlDocument mDocument;     private XmlNode mCurrentNode;     public Form1() {         InitializeComponent();         mDocument = new XmlDocument();         mDocument.Load("XPathQuery.xml");         mCurrentNode = mDocument.DocumentElement;         ClearListBox();     }     private void DisplayList(XmlNodeList nodeList) {         foreach (XmlNode node in nodeList) {             RecurseXmlDocumentNoSiblings(node, 0);         }     }     private void RecurseXmlDocumentNoSiblings(XmlNode root, int indent) {         if (root == null)             return;         if (root is XmlElement) {             listBoxResult.Items.Add(root.Name.PadLeft(root.Name.Length + indent));             if (root.HasChildNodes)                 RecurseXmlDocument(root.FirstChild, indent + 2);         } else if (root is XmlText) {             string text = ((XmlText)root).Value;             listBoxResult.Items.Add(text.PadLeft(text.Length + indent));         } else if (root is XmlComment) {             string text = root.Value;             listBoxResult.Items.Add(text.PadLeft(text.Length + indent));             if (root.HasChildNodes)                 RecurseXmlDocument(root.FirstChild, indent + 2);         }     }     private void RecurseXmlDocument(XmlNode root, int indent) {         if (root == null)             return;         if (root is XmlElement) {             listBoxResult.Items.Add(root.Name.PadLeft(root.Name.Length + indent));             if (root.HasChildNodes)                 RecurseXmlDocument(root.FirstChild, indent + 2);             if (root.NextSibling != null)                 RecurseXmlDocument(root.NextSibling, indent);         } else if (root is XmlText) {             string text = ((XmlText)root).Value;             listBoxResult.Items.Add(text.PadLeft(text.Length + indent));         } else if (root is XmlComment) {             string text = root.Value;             listBoxResult.Items.Add(text.PadLeft(text.Length + indent));             if (root.HasChildNodes)                 RecurseXmlDocument(root.FirstChild, indent + 2);             if (root.NextSibling != null)                 RecurseXmlDocument(root.NextSibling, indent);         }     }     private void ClearListBox() {         listBoxResult.Items.Clear();     }     private void radioButtonSelectRoot_CheckedChanged(object sender, EventArgs e) {         mCurrentNode = mCurrentNode.SelectSingleNode("//books");         ClearListBox();         RecurseXmlDocument(mCurrentNode, 0);     }     private void buttonClose_Click(object sender, EventArgs e) {         Application.Exit();     }     private void buttonExecute_Click(object sender, EventArgs e) {         if (textBoxQuery.Text == "")             return;         try {             XmlNodeList nodeList = mCurrentNode.SelectNodes(textBoxQuery.Text);             ClearListBox();             DisplayList(nodeList);         } catch (System.Exception err) {             MessageBox.Show(err.Message);         }     }     private void radioButtonSelectAllAuthors_CheckedChanged(object sender, EventArgs e) {         XmlNodeList nodeList = mCurrentNode.SelectNodes("//book/author");         ClearListBox();         DisplayList(nodeList);     }     private void radioButtonSelectSpecificAuthor_CheckedChanged(object sender, EventArgs e) {         XmlNodeList nodeList = mCurrentNode.SelectNodes("//book[author='J']");         ClearListBox();         DisplayList(nodeList);     }     private void radioButtonSelectAllBooks_CheckedChanged(object sender, EventArgs e) {         XmlNodeList nodeList = mCurrentNode.SelectNodes("//book");         ClearListBox();         DisplayList(nodeList);     }     private void radioButtonSetBookAsCurrent_CheckedChanged(object sender, EventArgs e) {         mCurrentNode = mCurrentNode.SelectSingleNode("book[title='C#']");         ClearListBox();         RecurseXmlDocumentNoSiblings(mCurrentNode, 0);     }     private void radioButtonSetBooksAsCurrent_CheckedChanged(object sender, EventArgs e) {         mCurrentNode = mCurrentNode.SelectSingleNode("//books");         ClearListBox();         RecurseXmlDocumentNoSiblings(mCurrentNode, 0);     }     private void radioButtonSelectAllChildren_CheckedChanged(object sender, EventArgs e) {         XmlNodeList nodeList = mCurrentNode.SelectNodes("*");         ClearListBox();         DisplayList(nodeList);     }     private void InitializeComponent() {         this.radioButtonSelectRoot = new System.Windows.Forms.RadioButton();         this.radioButtonSelectAllChildren = new System.Windows.Forms.RadioButton();         this.radioButtonSetBooksAsCurrent = new System.Windows.Forms.RadioButton();         this.radioButtonSetBookAsCurrent = new System.Windows.Forms.RadioButton();         this.radioButtonSelectAllBooks = new System.Windows.Forms.RadioButton();         this.radioButtonSelectSpecificAuthor = new System.Windows.Forms.RadioButton();         this.radioButtonSelectAllAuthors = new System.Windows.Forms.RadioButton();         this.textBoxQuery = new System.Windows.Forms.TextBox();         this.buttonExecute = new System.Windows.Forms.Button();         this.buttonClose = new System.Windows.Forms.Button();         this.listBoxResult = new System.Windows.Forms.ListBox();         this.SuspendLayout();         this.radioButtonSelectRoot.AutoSize = true;         this.radioButtonSelectRoot.Location = new System.Drawing.Point(13, 234);         this.radioButtonSelectRoot.Size = new System.Drawing.Size(72, 17);         this.radioButtonSelectRoot.Text = "Select root";         this.radioButtonSelectRoot.CheckedChanged += new System.EventHandler(this.radioButtonSelectRoot_CheckedChanged);         this.radioButtonSelectAllChildren.AutoSize = true;         this.radioButtonSelectAllChildren.Location = new System.Drawing.Point(163, 282);         this.radioButtonSelectAllChildren.Size = new System.Drawing.Size(104, 17);         this.radioButtonSelectAllChildren.Text = "Select all children";         this.radioButtonSelectAllChildren.CheckedChanged += new System.EventHandler(this.radioButtonSelectAllChildren_CheckedChanged);         this.radioButtonSetBooksAsCurrent.AutoSize = true;         this.radioButtonSetBooksAsCurrent.Location = new System.Drawing.Point(163, 258);         this.radioButtonSetBooksAsCurrent.Size = new System.Drawing.Size(120, 17);         this.radioButtonSetBooksAsCurrent.Text = "Set Books as current";         this.radioButtonSetBooksAsCurrent.CheckedChanged += new System.EventHandler(this.radioButtonSetBooksAsCurrent_CheckedChanged);         this.radioButtonSetBookAsCurrent.AutoSize = true;         this.radioButtonSetBookAsCurrent.Location = new System.Drawing.Point(163, 234);         this.radioButtonSetBookAsCurrent.Size = new System.Drawing.Size(115, 17);         this.radioButtonSetBookAsCurrent.Text = "Set Book as current";         this.radioButtonSetBookAsCurrent.CheckedChanged += new System.EventHandler(this.radioButtonSetBookAsCurrent_CheckedChanged);         this.radioButtonSelectAllBooks.AutoSize = true;         this.radioButtonSelectAllBooks.Location = new System.Drawing.Point(13, 306);         this.radioButtonSelectAllBooks.Size = new System.Drawing.Size(96, 17);         this.radioButtonSelectAllBooks.Text = "Select all books";         this.radioButtonSelectAllBooks.CheckedChanged += new System.EventHandler(this.radioButtonSelectAllBooks_CheckedChanged);         this.radioButtonSelectSpecificAuthor.AutoSize = true;         this.radioButtonSelectSpecificAuthor.Location = new System.Drawing.Point(13, 282);         this.radioButtonSelectSpecificAuthor.Size = new System.Drawing.Size(137, 17);         this.radioButtonSelectSpecificAuthor.Text = "Select by specific author";         this.radioButtonSelectSpecificAuthor.CheckedChanged += new System.EventHandler(this.radioButtonSelectSpecificAuthor_CheckedChanged);         this.radioButtonSelectAllAuthors.AutoSize = true;         this.radioButtonSelectAllAuthors.Location = new System.Drawing.Point(13, 258);         this.radioButtonSelectAllAuthors.Margin = new System.Windows.Forms.Padding(3, 1, 3, 3);         this.radioButtonSelectAllAuthors.Size = new System.Drawing.Size(102, 17);         this.radioButtonSelectAllAuthors.Text = "Select all authors";         this.radioButtonSelectAllAuthors.CheckedChanged += new System.EventHandler(this.radioButtonSelectAllAuthors_CheckedChanged);         this.textBoxQuery.Location = new System.Drawing.Point(13, 330);         this.textBoxQuery.Size = new System.Drawing.Size(385, 20);         this.buttonExecute.Location = new System.Drawing.Point(323, 234);         this.buttonExecute.Text = "Execute";         this.buttonExecute.Click += new System.EventHandler(this.buttonExecute_Click);         this.buttonClose.Location = new System.Drawing.Point(405, 13);         this.buttonClose.Text = "Close";         this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click);         this.listBoxResult.FormattingEnabled = true;         this.listBoxResult.Location = new System.Drawing.Point(13, 13);         this.listBoxResult.Size = new System.Drawing.Size(385, 212);         this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);         this.ClientSize = new System.Drawing.Size(492, 362);         this.Controls.Add(this.listBoxResult);         this.Controls.Add(this.buttonClose);         this.Controls.Add(this.buttonExecute);         this.Controls.Add(this.textBoxQuery);         this.Controls.Add(this.radioButtonSelectAllAuthors);         this.Controls.Add(this.radioButtonSelectSpecificAuthor);         this.Controls.Add(this.radioButtonSelectAllBooks);         this.Controls.Add(this.radioButtonSetBookAsCurrent);         this.Controls.Add(this.radioButtonSetBooksAsCurrent);         this.Controls.Add(this.radioButtonSelectAllChildren);         this.Controls.Add(this.radioButtonSelectRoot);         this.Text = "XPath Queries";         this.ResumeLayout(false);         this.PerformLayout();     }     private System.Windows.Forms.RadioButton radioButtonSelectRoot;     private System.Windows.Forms.RadioButton radioButtonSelectAllChildren;     private System.Windows.Forms.RadioButton radioButtonSetBooksAsCurrent;     private System.Windows.Forms.RadioButton radioButtonSetBookAsCurrent;     private System.Windows.Forms.RadioButton radioButtonSelectAllBooks;     private System.Windows.Forms.RadioButton radioButtonSelectSpecificAuthor;     private System.Windows.Forms.RadioButton radioButtonSelectAllAuthors;     private System.Windows.Forms.TextBox textBoxQuery;     private System.Windows.Forms.Button buttonExecute;     private System.Windows.Forms.Button buttonClose;     private System.Windows.Forms.ListBox listBoxResult;     [STAThread]     static void Main() {         Application.EnableVisualStyles();         Application.Run(new Form1());     } }