i did it this way
XmlDocument newXmlDoc = new XmlDocument();
XmlTextWriter Xwr ;
XmlElement root = Doc.DocumentElement;
if (Doc.DocumentElement.ChildNodes.Count > 0)
RootNodeName = "//" + root.Name + "/" + Doc.DocumentElement.ChildNodes[0].Name;
else
RootNodeName = "//" + root.Name;
XmlNodeList NodeList = Doc.SelectNodes(RootNodeName);
XmlNode CurrentNode = null;
XmlNode RootNode = newXmlDoc.CreateElement(root.Name);
newXmlDoc.AppendChild(RootNode);
for (int i = 0; i < NodeList.Count; i++)
{
CurrentNode = NodeList[i];
if (CurrentNode.InnerXml == null || CurrentNode.InnerXml.Trim() == "")
continue;
if (RecCount < iBatchSize)
{
XmlNode targetNode = newXmlDoc.ImportNode(CurrentNode, true);
RootNode.AppendChild(targetNode);
RecCount = RecCount + 1;
}
else
{
FileCount = FileCount + 1;
Xwr = new XmlTextWriter(FilePath + @"\" + FileName + "_" + FileCount.ToString() + ".xml", Encoding.UTF8);
Xwr.Formatting = Formatting.None;
newXmlDoc.Save(Xwr);
Xwr.Close();
Xwr = null;
newXmlDoc = null;
newXmlDoc = new XmlDocument();
RootNode = newXmlDoc.CreateElement(root.Name);
newXmlDoc.AppendChild(RootNode);
XmlNode targetNode = newXmlDoc.ImportNode(CurrentNode, true);
RootNode.AppendChild(targetNode);
RecCount = 1;
}
if (i == NodeList.Count - 1)
{
if (RecCount > 0)
{
FileCount = FileCount + 1;
Xwr = new XmlTextWriter(FilePath + @"\" + FileName + "_" + FileCount.ToString() + ".xml", Encoding.UTF8);
Xwr.Formatting = Formatting.None;
newXmlDoc.Save(Xwr);
Xwr.Close();
Xwr = null;
Console.WriteLine();
newXmlDoc = null;
}
}
}