I have an XML file and I am loading it in Xmldocument. This document has a node with some child nodes like this
Here is a solution without using LINQ to XML. It's implemented as an extension method for the XmlNode
class:
public static void InsertAt(this XmlNode node, XmlNode insertingNode, int index = 0)
{
if(insertingNode == null)
return;
if (index < 0)
index = 0;
var childNodes = node.ChildNodes;
var childrenCount = childNodes.Count;
if (index >= childrenCount)
{
node.AppendChild(insertingNode);
return;
}
var followingNode = childNodes[index];
node.InsertBefore(insertingNode, followingNode);
}
Now, you can insert a node at the desired position as simple as:
parentXmlNode.InsertAt(childXmlNode, 7);
http://www.c-sharpcorner.com/Forums/Thread/55428/how-to-insert-xml-child-node-programmatically.aspx Cheack it!I guess it will help u.
you can use XLinq to modify XML document
Following is an example of xml modification
String xmlString = "<?xml version=\"1.0\"?>"+"<xmlhere>"+
"<somenode>"+
" <child> </child>"+
" <children>1</children>"+ //1
" <children>2</children>"+ //2
" <children>3</children>"+ // 3, I need to insert it
" <children>4</children>"+ //4, I need to insert this second time
" <children>5</children>"+
" <children>6</children>"+
" <child> </child>"+
" </somenode>"+
"</xmlhere>";
XElement root = XElement.Parse(xmlString);
var childrens = root.Descendants("children").ToArray();
var third = childrens[3];
var fourth = childrens[4];
third.AddBeforeSelf(new XElement("children"));
fourth.AddBeforeSelf(new XElement("children"));
var updatedchildren = root.Descendants("children").ToArray();