How to split xml file into chunks (small size xmls) in ASP .NET and in C# Example/Sample code


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;
        }
 

1 comment:

  1. using System;
    using 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());

    ReplyDelete