How to split xml file into chunks (small size xmls) in ASP .NET and in C# Example/Sample code
ASP.NET and C# sample code:
// Big XML
<Books BookType="TECH">
<Book Code="123" name="ASP.NET" />
<Book Code="123" name="C#.NET" />
<Book Code="123" name="SQL Server" />
<Book Code="123" name="JAVA" />
<Book Code="123" name="SAP" />
</Request>
Split the above xml into two xml files as follows
<Books BookType="TECH">
<Book Code="123" name="ASP.NET" />
<Book Code="123" name="C#.NET" />
</Request>
<Books BookType="TECH">
<Book Code="123" name="SQL Server" />
<Book Code="123" name="JAVA" />
</Request>
<Books BookType="TECH">
<Book Code="123" name="SAP" />
</Request>
// here chunkSize is 2
public List<XDocument> ChunkRequest(XDocument bigXML, int chunkSize)
{
var smallXMLs = new List<XDocument>();
var d = new XDocument(bigXML);
var ids = d.Root.Elements("Book");
XDocument newRequest = null;
do
{
newRequest = new XDocument(new XElement("Books", new XAttribute("BookType", "TECH")));
var chunk = ids.Take(chunkSize);
newRequest.Root.Add(chunk);
chunk.Remove();
smallXMLs.Add(newRequest);
} while (ids.Any());
return smallXMLs;
}
using System;
ReplyDeleteusing System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace chunkxml
{
class Program
{
public List ChunkRequest (XDocument bigXML, int chunksize)
{
var smallXMLs = new List();
var d = new System.Xml.Linq.XDocument(bigXML);
var ids = d.Root.Element("Book");
XDocument newRequest = null;
do
{
newRequest = new XDocument (new XElement("Books", new XAttribute("BookType","TECH")));
var chunk = ids.take(chunksize);
newRequest.Root.Add(chunk);
chunk.Remove();
smallXMLs.Add(newRequest);
}while (ids.Any());
return smallXMLs;
static void Main(string[] args)
{
}
}
}
hi, theres 2 errors, in the lines:
var chunk = ids.take(chunksize);
and
}while (ids.Any());