Hi Poonam123,
Check this example. Now please take its reference and correct your code.
HTML
<asp:TreeView ID="TreeView1" runat="server" ImageSet="Simple" DataSourceID="SiteMapDataSource1">
</asp:TreeView>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />
<hr />
<br />
<table>
<tr>
<td>Url</td>
<td><asp:TextBox runat="server" ID="txtUrl" /></td>
</tr>
<tr>
<td>Title</td>
<td><asp:TextBox runat="server" ID="txtTitle" /></td>
</tr>
<tr>
<td>Description</td>
<td><asp:TextBox runat="server" ID="txtDescription" /></td>
</tr>
<tr>
<td colspan="2" align="center">
<asp:Button ID="Button1" Text="Add" runat="server" OnClick="Add" />
</td>
</tr>
</table>
Namespaces
C#
using System.Xml;
VB.Net
Imports System.Xml
Code
C#
protected void Add(object sender, EventArgs e)
{
LoadSiteMap();
Response.Redirect(Request.Url.AbsoluteUri);
}
public void LoadSiteMap()
{
string sSiteMapFilePath = Server.MapPath("~/Web.sitemap");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(sSiteMapFilePath);
XmlNode node = GenerateIndexNode(xmlDoc, "siteMapNode", txtUrl.Text, txtTitle.Text, txtDescription.Text);
XmlNode childNode = xmlDoc.DocumentElement;
childNode.InsertAfter(node, childNode.LastChild);
xmlDoc.Save(sSiteMapFilePath);
}
public XmlNode GenerateIndexNode(XmlDocument xmlDocument, string siteMapNodeName, string url, string title, string description)
{
XmlElement nodeSite = (XmlElement)xmlDocument.GetElementsByTagName(siteMapNodeName)[0];
XmlElement childElement = xmlDocument.CreateElement(siteMapNodeName);
childElement.SetAttribute("url", url);
childElement.SetAttribute("title", title);
childElement.SetAttribute("description", description);
nodeSite.AppendChild(childElement);
return nodeSite;
}
VB.Net
Protected Sub Add(ByVal sender As Object, ByVal e As EventArgs)
LoadSiteMap()
Response.Redirect(Request.Url.AbsoluteUri)
End Sub
Public Sub LoadSiteMap()
Dim sSiteMapFilePath As String = Server.MapPath("~/Web.sitemap")
Dim xmlDoc As XmlDocument = New XmlDocument()
xmlDoc.Load(sSiteMapFilePath)
Dim node As XmlNode = GenerateIndexNode(xmlDoc, "siteMapNode", txtUrl.Text, txtTitle.Text, txtDescription.Text)
Dim childNode As XmlNode = xmlDoc.DocumentElement
childNode.InsertAfter(node, childNode.LastChild)
xmlDoc.Save(sSiteMapFilePath)
End Sub
Public Function GenerateIndexNode(ByVal xmlDocument As XmlDocument, ByVal siteMapNodeName As String, ByVal url As String, ByVal title As String, ByVal description As String) As XmlNode
Dim nodeSite As XmlElement = CType(xmlDocument.GetElementsByTagName(siteMapNodeName)(0), XmlElement)
Dim childElement As XmlElement = xmlDocument.CreateElement(siteMapNodeName)
childElement.SetAttribute("url", url)
childElement.SetAttribute("title", title)
childElement.SetAttribute("description", description)
nodeSite.AppendChild(childElement)
Return nodeSite
End Function
Screenshot

Refer below links for more functionality.
https://stackoverflow.com/questions/19922931/append-new-node-with-child-node-in-xml
https://harriyott.com/2007/03/adding-dynamic-nodes-to-aspnet-site