Create an element type XmlNode like text value

   
 

#region License and Copyright
/*
 * Dotnet Commons Xml
 *
 *
 * This library is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU Lesser General Public License as published by 
 * the Free Software Foundation; either version 2.1 of the License, or 
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 
 * for more details. 
 *
 * You should have received a copy of the GNU Lesser General Public License 
 * along with this library; if not, write to the 
 * Free Software Foundation, Inc., 
 * 59 Temple Place, 
 * Suite 330, 
 * Boston, 
 * MA 02111-1307 
 * USA 
 * 
 */
#endregion

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.Serialization;

//using Dotnet.Commons.Reflection;

namespace Dotnet.Commons.Xml
{
  
  ///  
  /// <summary>
  /// This utility class contains wrapper functions that help to ease the handling and 
    /// manipulation of Xml documents, such as adding an element, adding an attribute
    /// to an element, copying and cloning of nodes, etc.
  ///
  /// </summary>
  /// 
    
  public abstract class XmlUtils
  {
    /// -----------------------------------------------------------
    /// <summary>
    /// Create an element type XmlNode like
    /// </summary>
    /// <param name="xmldoc"></param>
    /// <param name="nodeName"></param>
    /// <param name="nodeValue"></param>
    /// <param name="namespaceURI"></param>
    /// <returns>an XmlNode of element type</returns>
    /// -----------------------------------------------------------
    public static XmlNode CreateTextElementNode(XmlDocument xmldoc, 
                          string nodeName, 
                          object nodeValue, 
                          string namespaceURI)
    {
      XmlNode aNode = xmldoc.CreateElement(nodeName, namespaceURI);

      if (nodeValue != null)
        aNode.AppendChild(xmldoc.CreateTextNode(nodeValue.ToString()));
      
      return aNode;
    }
    /// -------------------------------------------------------------------
    /// <summary>
    /// Create an element that holds a blog of data in Base64 format. 
    /// The blog of data is passed in as an array of byte.    
    /// </summary>
    /// <param name="xmldoc"></param>
    /// <param name="nodeName">name of the node in which the data is to be held under</param>
    /// <param name="inputBytes">blog of data to be converted to Base64</param>
    /// <param name="namespaceURI"></param>
    /// <returns></returns>
    /// -------------------------------------------------------------------
    public static XmlNode CreateBase64ElementNode(XmlDocument xmldoc, 
                            string nodeName, 
                            byte[] inputBytes, 
                            string namespaceURI)
    {

      // Convet byte array into Base64 string
      string encodedData = Convert.ToBase64String(inputBytes);
      
      return CreateTextElementNode(xmldoc, nodeName, encodedData, namespaceURI);
    }
    }
}    

   
     


Load XML file to DataTable then add DataTable to ListView


   

/*
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <Employee>
    <ID>8</ID>
    <Name>Joe</Name>
  </Employee>
</NewDataSet>
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

public class Form1 : Form
{
    private System.Windows.Forms.Button cmdFillList;
    private System.Windows.Forms.ListView listView;
    private System.Windows.Forms.CheckBox chkGroups;
      public Form1() {
            InitializeComponent();
      listView.View = View.Tile;
      listView.TileSize = new Size(300, 50);
      FillList();
      }
    public static DataTable GetProducts()
    {
      DataSet dsStore = new DataSet();
      dsStore.ReadXml("myXmlFile.xml");
      return dsStore.Tables["Employee"];
    }

    public static DataTable GetCategories()
    {
      DataSet dsStore = new DataSet();
      dsStore.ReadXml("myXmlFile.xml");
      return dsStore.Tables["Employee"];
    }

    private void cmdFillList_Click(object sender, EventArgs e)
    {
      FillList();
    }

    private void FillList()
    {
      listView.Items.Clear();

      if (listView.Groups.Count == 0)
      {
        DataTable dtGroups = GetCategories();
        foreach (DataRow dr in dtGroups.Rows)
        {
          listView.Groups.Add(dr["ID"].ToString(), dr["Name"].ToString());
        }
      }
      listView.ShowGroups = chkGroups.Checked;

      DataTable dtProducts = GetProducts();

      listView.BeginUpdate();

      foreach (DataRow dr in dtProducts.Rows)
      {
        ListViewItem listItem = new ListViewItem(dr["Name"].ToString());
        listItem.ImageIndex = 0;

        listItem.Group = listView.Groups[dr["ID"].ToString()];

        listItem.SubItems.Add(dr["ID"].ToString());

        listView.Items.Add(listItem);
      }

      if (listView.Columns.Count == 0)
      {
        listView.Columns.Add("Product", 100, HorizontalAlignment.Left);
        listView.Columns.Add("ID", 100, HorizontalAlignment.Left);
        listView.Columns.Add("Description", 100, HorizontalAlignment.Left);
      }
      listView.EndUpdate();
    }

    private void NewView(object sender, System.EventArgs e)
    {
      listView.View = (View)(((Control)sender).Tag);
    }

    private void listView_ColumnClick(object sender, ColumnClickEventArgs e)
    {
      ListViewItemComparer sorter = listView.ListViewItemSorter as ListViewItemComparer;

      if (sorter == null)
      {
        sorter = new ListViewItemComparer(e.Column);
        listView.ListViewItemSorter = sorter;
      } else {
        if (sorter.Column == e.Column &amp;&amp; !sorter.Descending)
        {
          sorter.Descending = true;
          listView.Sorting = SortOrder.Descending;        
        }
        else
        {
          listView.Sorting = SortOrder.Ascending;
          sorter.Descending = false;
          sorter.Column = e.Column;
        }
      }  
      listView.Sort();
    }

    private void cmdResizeColumns_Click(object sender, EventArgs e)
    {
      listView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
    }


    private void listView_SelectedIndexChanged(object sender, EventArgs e)
    {
      if (listView.SelectedItems.Count > 0)
        Console.WriteLine(listView.SelectedItems[0].SubItems[2].Text);
    }

    private void chkGroups_CheckedChanged(object sender, EventArgs e)
    {
      FillList();
    }
    private void InitializeComponent()
    {
      this.cmdFillList = new System.Windows.Forms.Button();
      this.listView = new System.Windows.Forms.ListView();
      this.chkGroups = new System.Windows.Forms.CheckBox();
      this.SuspendLayout();
      // 
      // cmdFillList
      // 
      this.cmdFillList.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
      this.cmdFillList.FlatStyle = System.Windows.Forms.FlatStyle.System;
      this.cmdFillList.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
      this.cmdFillList.Location = new System.Drawing.Point(269, 195);
      this.cmdFillList.Name = "cmdFillList";
      this.cmdFillList.Size = new System.Drawing.Size(114, 24);
      this.cmdFillList.TabIndex = 7;
      this.cmdFillList.Text = "Fill List";
      this.cmdFillList.Click += new System.EventHandler(this.cmdFillList_Click);
      // 
      // listView
      // 
      this.listView.AllowColumnReorder = true;
      this.listView.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.listView.FullRowSelect = true;
      this.listView.GridLines = true;
      this.listView.Location = new System.Drawing.Point(7, 8);
      this.listView.MultiSelect = false;
      this.listView.Name = "listView";
      this.listView.Size = new System.Drawing.Size(254, 282);
      this.listView.Sorting = System.Windows.Forms.SortOrder.Ascending;
      this.listView.TabIndex = 6;
      this.listView.SelectedIndexChanged += new System.EventHandler(this.listView_SelectedIndexChanged);
      this.listView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView_ColumnClick);

      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
      this.ClientSize = new System.Drawing.Size(390, 381);
      this.Controls.Add(this.listView);
      this.Controls.Add(this.cmdFillList);
      this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
      this.Name = "Form1";
      this.Text = "ListView Example";
      this.ResumeLayout(false);
      this.PerformLayout();

    }

  [STAThread]
  static void Main()
  {
    Application.EnableVisualStyles();
    Application.Run(new Form1());
  }

}
  public class ListViewItemComparer : System.Collections.IComparer
  {
    private int column;
    public int Column
    {
      get { return column; }
      set { column = value; }
    }

    private bool numeric = false;
    public bool Numeric
    {
      get { return numeric; }
      set { numeric = value; }
    }

    private bool descending = false;
    public bool Descending
    {
      get { return descending; }
      set { descending = value; }
    }

    public ListViewItemComparer(int columnIndex)
    {
      Column = columnIndex;
    }

    public int Compare(object x, object y)
    {
      ListViewItem listX, listY;
      if (descending)
      {
        listY = (ListViewItem)x;
        listX = (ListViewItem)y;
      }
      else
      {
        listX = (ListViewItem)x;
        listY = (ListViewItem)y;
      }

      if (Numeric)
      {
        decimal valX, valY;
        Decimal.TryParse(listX.SubItems[Column].Text, out valX);
        Decimal.TryParse(listY.SubItems[Column].Text, out valY);

        return Decimal.Compare(valX, valY);
      }
      else
      {
        return String.Compare(
          listX.SubItems[Column].Text, listY.SubItems[Column].Text);
      }
    }
  }


           
          


Load data in database table to XML format and save it to DataGrid


   


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Xml;

public class Form1 : System.Windows.Forms.Form {
   private System.Windows.Forms.Button btnReadXml;
   private System.Windows.Forms.Button btnWriteXml;
   private System.Windows.Forms.Button btnConfigXml;
   private System.Windows.Forms.DataGrid dataGrid1;
   private System.ComponentModel.Container components = null;

   public Form1() {
      InitializeComponent();
   }

   private void InitializeComponent() {
      this.btnReadXml = new System.Windows.Forms.Button();
      this.btnWriteXml = new System.Windows.Forms.Button();
      this.btnConfigXml = new System.Windows.Forms.Button();
      this.dataGrid1 = new System.Windows.Forms.DataGrid();
      ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
      this.SuspendLayout();

      this.btnReadXml.Location = new System.Drawing.Point(8, 8);
      this.btnReadXml.Name = "btnReadXml";
      this.btnReadXml.TabIndex = 0;
      this.btnReadXml.Text = "Read XML";
      this.btnReadXml.Click += new System.EventHandler(this.btnReadXml_Click);

      this.btnWriteXml.Location = new System.Drawing.Point(8, 48);
      this.btnWriteXml.Name = "btnWriteXml";
      this.btnWriteXml.TabIndex = 1;
      this.btnWriteXml.Text = "Write XML";
      this.btnWriteXml.Click += new System.EventHandler(this.btnWriteXml_Click);

      this.btnConfigXml.Location = new System.Drawing.Point(8, 88);
      this.btnConfigXml.Name = "btnConfigXml";
      this.btnConfigXml.TabIndex = 2;
      this.btnConfigXml.Text = "Config";
      this.btnConfigXml.Click += new System.EventHandler(this.btnConfigXml_Click);

      this.dataGrid1.DataMember = "";
      this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
      this.dataGrid1.Location = new System.Drawing.Point(104, 8);
      this.dataGrid1.Name = "dataGrid1";
      this.dataGrid1.Size = new System.Drawing.Size(184, 192);
      this.dataGrid1.TabIndex = 3;

      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(292, 272);
      this.Controls.Add(this.dataGrid1);
      this.Controls.Add(this.btnConfigXml);
      this.Controls.Add(this.btnWriteXml);
      this.Controls.Add(this.btnReadXml);
      this.Name = "Form1";
      this.Text = "XML Demo";
      ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
      this.ResumeLayout(false);
   }

   static void Main() {
      Application.Run(new Form1());
   }

   private void btnReadXml_Click(object sender, System.EventArgs e) {
      DataSet ds = new DataSet();
      ds.ReadXml("Employee.xml",XmlReadMode.InferSchema);
      dataGrid1.SetDataBinding(ds, "Employee");
   }

   private void btnWriteXml_Click(object sender, System.EventArgs e) {
      DataSet ds = (DataSet) dataGrid1.DataSource;
      ds.WriteXml("XMLFileOut.xml",XmlWriteMode.IgnoreSchema);    
   }

   private void btnConfigXml_Click(object sender, System.EventArgs e) {
      string connString = @"server=(local)SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI";
      SqlConnection conn = new SqlConnection(connString);

      SqlCommand cmd = new SqlCommand();
      cmd.Connection = conn;
      cmd.CommandText = @"select id,lastname from employee for xml auto";

      try {
         conn.Open();
         XmlReader xmlrdr = cmd.ExecuteXmlReader();
         DataSet ds = new DataSet();
         ds.ReadXml(xmlrdr,XmlReadMode.InferSchema);
         dataGrid1.DataSource=ds;
      } catch (SqlException ex) {
         MessageBox.Show (ex.Message);
      } finally  {
         conn.Close();
      }
  }
}


/* File: Employee.xml
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <employee id="1" lastname="Yin       ">
  </employee>
</NewDataSet>

*/
           
          


Save data in DataGrid into XML file


   

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Xml;

public class Form1 : System.Windows.Forms.Form {
   private System.Windows.Forms.Button btnReadXml;
   private System.Windows.Forms.Button btnWriteXml;
   private System.Windows.Forms.Button btnConfigXml;
   private System.Windows.Forms.DataGrid dataGrid1;
   private System.ComponentModel.Container components = null;

   public Form1() {
      InitializeComponent();
   }

   private void InitializeComponent() {
      this.btnReadXml = new System.Windows.Forms.Button();
      this.btnWriteXml = new System.Windows.Forms.Button();
      this.btnConfigXml = new System.Windows.Forms.Button();
      this.dataGrid1 = new System.Windows.Forms.DataGrid();
      ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
      this.SuspendLayout();

      this.btnReadXml.Location = new System.Drawing.Point(8, 8);
      this.btnReadXml.Name = "btnReadXml";
      this.btnReadXml.TabIndex = 0;
      this.btnReadXml.Text = "Read XML";
      this.btnReadXml.Click += new System.EventHandler(this.btnReadXml_Click);

      this.btnWriteXml.Location = new System.Drawing.Point(8, 48);
      this.btnWriteXml.Name = "btnWriteXml";
      this.btnWriteXml.TabIndex = 1;
      this.btnWriteXml.Text = "Write XML";
      this.btnWriteXml.Click += new System.EventHandler(this.btnWriteXml_Click);

      this.btnConfigXml.Location = new System.Drawing.Point(8, 88);
      this.btnConfigXml.Name = "btnConfigXml";
      this.btnConfigXml.TabIndex = 2;
      this.btnConfigXml.Text = "Config";
      this.btnConfigXml.Click += new System.EventHandler(this.btnConfigXml_Click);

      this.dataGrid1.DataMember = "";
      this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
      this.dataGrid1.Location = new System.Drawing.Point(104, 8);
      this.dataGrid1.Name = "dataGrid1";
      this.dataGrid1.Size = new System.Drawing.Size(184, 192);
      this.dataGrid1.TabIndex = 3;

      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(292, 272);
      this.Controls.Add(this.dataGrid1);
      this.Controls.Add(this.btnConfigXml);
      this.Controls.Add(this.btnWriteXml);
      this.Controls.Add(this.btnReadXml);
      this.Name = "Form1";
      this.Text = "XML Demo";
      ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
      this.ResumeLayout(false);
   }

   static void Main() {
      Application.Run(new Form1());
   }

   private void btnReadXml_Click(object sender, System.EventArgs e) {
      DataSet ds = new DataSet();
      ds.ReadXml("Employee.xml",XmlReadMode.InferSchema);
      dataGrid1.SetDataBinding(ds, "Employee");
   }

   private void btnWriteXml_Click(object sender, System.EventArgs e) {
      DataSet ds = (DataSet) dataGrid1.DataSource;
      ds.WriteXml("XMLFileOut.xml",XmlWriteMode.IgnoreSchema);    
   }

   private void btnConfigXml_Click(object sender, System.EventArgs e) {
      string connString = @"server=(local)SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI";
      SqlConnection conn = new SqlConnection(connString);

      SqlCommand cmd = new SqlCommand();
      cmd.Connection = conn;
      cmd.CommandText = @"select id,lastname from employee for xml auto";

      try {
         conn.Open();
         XmlReader xmlrdr = cmd.ExecuteXmlReader();
         DataSet ds = new DataSet();
         ds.ReadXml(xmlrdr,XmlReadMode.InferSchema);
         dataGrid1.DataSource=ds;
      } catch (SqlException ex) {
         MessageBox.Show (ex.Message);
      } finally  {
         conn.Close();
      }
  }
}


/* File: Employee.xml
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <employee id="1" lastname="Yin       ">
  </employee>
</NewDataSet>

*/

           
          


Read XML data from file into DataGrid


   


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Xml;

public class Form1 : System.Windows.Forms.Form {
   private System.Windows.Forms.Button btnReadXml;
   private System.Windows.Forms.Button btnWriteXml;
   private System.Windows.Forms.Button btnConfigXml;
   private System.Windows.Forms.DataGrid dataGrid1;
   private System.ComponentModel.Container components = null;

   public Form1() {
      InitializeComponent();
   }

   private void InitializeComponent() {
      this.btnReadXml = new System.Windows.Forms.Button();
      this.btnWriteXml = new System.Windows.Forms.Button();
      this.btnConfigXml = new System.Windows.Forms.Button();
      this.dataGrid1 = new System.Windows.Forms.DataGrid();
      ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
      this.SuspendLayout();

      this.btnReadXml.Location = new System.Drawing.Point(8, 8);
      this.btnReadXml.Name = "btnReadXml";
      this.btnReadXml.TabIndex = 0;
      this.btnReadXml.Text = "Read XML";
      this.btnReadXml.Click += new System.EventHandler(this.btnReadXml_Click);

      this.btnWriteXml.Location = new System.Drawing.Point(8, 48);
      this.btnWriteXml.Name = "btnWriteXml";
      this.btnWriteXml.TabIndex = 1;
      this.btnWriteXml.Text = "Write XML";
      this.btnWriteXml.Click += new System.EventHandler(this.btnWriteXml_Click);

      this.btnConfigXml.Location = new System.Drawing.Point(8, 88);
      this.btnConfigXml.Name = "btnConfigXml";
      this.btnConfigXml.TabIndex = 2;
      this.btnConfigXml.Text = "Config";
      this.btnConfigXml.Click += new System.EventHandler(this.btnConfigXml_Click);

      this.dataGrid1.DataMember = "";
      this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
      this.dataGrid1.Location = new System.Drawing.Point(104, 8);
      this.dataGrid1.Name = "dataGrid1";
      this.dataGrid1.Size = new System.Drawing.Size(184, 192);
      this.dataGrid1.TabIndex = 3;

      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(292, 272);
      this.Controls.Add(this.dataGrid1);
      this.Controls.Add(this.btnConfigXml);
      this.Controls.Add(this.btnWriteXml);
      this.Controls.Add(this.btnReadXml);
      this.Name = "Form1";
      this.Text = "XML Demo";
      ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
      this.ResumeLayout(false);
   }

   static void Main() {
      Application.Run(new Form1());
   }

   private void btnReadXml_Click(object sender, System.EventArgs e) {
      DataSet ds = new DataSet();
      ds.ReadXml("Employee.xml",XmlReadMode.InferSchema);
      dataGrid1.SetDataBinding(ds, "Employee");
   }

   private void btnWriteXml_Click(object sender, System.EventArgs e) {
      DataSet ds = (DataSet) dataGrid1.DataSource;
      ds.WriteXml("XMLFileOut.xml",XmlWriteMode.IgnoreSchema);    
   }

   private void btnConfigXml_Click(object sender, System.EventArgs e) {
      string connString = @"server=(local)SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI";
      SqlConnection conn = new SqlConnection(connString);

      SqlCommand cmd = new SqlCommand();
      cmd.Connection = conn;
      cmd.CommandText = @"select id,lastname from employee for xml auto";

      try {
         conn.Open();
         XmlReader xmlrdr = cmd.ExecuteXmlReader();
         DataSet ds = new DataSet();
         ds.ReadXml(xmlrdr,XmlReadMode.InferSchema);
         dataGrid1.DataSource=ds;
      } catch (SqlException ex) {
         MessageBox.Show (ex.Message);
      } finally  {
         conn.Close();
      }
  }
}


/* File: Employee.xml
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <employee id="1" lastname="Yin       ">
  </employee>
</NewDataSet>

*/
           
          


Create XML document: xml element and properties

   

using System;
using System.Xml;

  class XMLDemo{
    [STAThread]
    static void Main(string[] args) {
      XmlDocument xmlDom = new XmlDocument();
      xmlDom.AppendChild(xmlDom.CreateElement("", "books", ""));
      XmlElement xmlRoot = xmlDom.DocumentElement;
      XmlElement xmlBook;
      XmlElement xmlTitle, xmlAuthor, xmlPrice;
      XmlText xmlText;
    
      xmlBook= xmlDom.CreateElement("", "A", "");
      xmlBook.SetAttribute("property", "", "a");
    
      xmlTitle = xmlDom.CreateElement("", "B", "");
      xmlText = xmlDom.CreateTextNode("text");
      xmlTitle.AppendChild(xmlText);
      xmlBook.AppendChild(xmlTitle);
            
      xmlRoot.AppendChild(xmlBook);
    
      xmlAuthor = xmlDom.CreateElement("", "C", "");
      xmlText = xmlDom.CreateTextNode("textg");
      xmlAuthor.AppendChild(xmlText);
      xmlBook.AppendChild(xmlAuthor);
            
      xmlPrice = xmlDom.CreateElement("", "D", "");
      xmlText = xmlDom.CreateTextNode("99999");
      xmlPrice.AppendChild(xmlText);
      xmlBook.AppendChild(xmlPrice);
    
      xmlRoot.AppendChild(xmlBook);
    
      Console.WriteLine(xmlDom.InnerXml);

      xmlDom.Save("books.xml");
      
      XmlDocument xmlDom2 = new XmlDocument();
      xmlDom2.Load("books.xml");
      Console.WriteLine(xmlDom2.InnerXml);

    }
  }


           
          


Append Child

   



using System;
using System.Xml;

class MainClass {
    public static void Main() {
        XmlDocument doc = new XmlDocument();
        XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
        doc.AppendChild(docNode);

        XmlNode productsNode = doc.CreateElement("products");
        doc.AppendChild(productsNode);

        XmlNode productNode = doc.CreateElement("product");
        XmlAttribute productAttribute = doc.CreateAttribute("id");
        productAttribute.Value = "1001";
        productNode.Attributes.Append(productAttribute);
        productsNode.AppendChild(productNode);

        XmlNode nameNode = doc.CreateElement("productName");
        nameNode.AppendChild(doc.CreateTextNode("Coffee"));
        productNode.AppendChild(nameNode);
        XmlNode priceNode = doc.CreateElement("productPrice");
        priceNode.AppendChild(doc.CreateTextNode("0.99"));
        productNode.AppendChild(priceNode);

        productNode = doc.CreateElement("product");
        productAttribute = doc.CreateAttribute("id");
        productAttribute.Value = "1002";
        productNode.Attributes.Append(productAttribute);
        productsNode.AppendChild(productNode);
        nameNode = doc.CreateElement("productName");
        nameNode.AppendChild(doc.CreateTextNode("Tea Pot"));
        productNode.AppendChild(nameNode);
        priceNode = doc.CreateElement("productPrice");
        priceNode.AppendChild(doc.CreateTextNode("12.99"));
        productNode.AppendChild(priceNode);

        doc.Save(Console.Out);
    }
}