c# - Very large XML file generation -


i have requirement generate xml file. easy-peasy in c#. problem (aside slow database query [separate problem]) output file reaches 2gb easily. on top of that, output xml not in format can done in sql. each parent element aggregates elements in children and maintains sequential unique identifier spans file. example:

<level1element>     <recordidentifier>1</recordidentifier>     <aggregateoflevel2children>11</aggregateofl2children>     <level2children>         <level2element>         <recordidentifier>2</recordidentifier>             <aggregateoflevel3children>92929</aggregateoflevel3children>             <level3children>                 <level3element>                     <recordidentifier>3</recordidentifier>                     <level3data>a</level3data>                 </level3element>                 <level3element>                     <recordidentifier>4</recordidentifier>                     <level3data>b</level3data>                 </level3element>             </level3children>         </level2element>         <level2element>         <recordidentifier>5</recordidentifier>             <aggregateoflevel3children>92929</aggregateoflevel3children>             <level3children>                 <level3element>                     <recordidentifier>6</recordidentifier>                     <level3data>h</level3data>                 </level3element>                 <level3element>                     <recordidentifier>7</recordidentifier>                     <level3data>e</level3data>                 </level3element>             </level3children>         </level2element>     </level2children> </level1element> 

the schema in use goes 5 levels. sake of brevity, i'm including 3. not control schema, nor can request changes it.

it's simple, trivial matter aggregate of data in objects , serialize out xml based on schema. when dealing such large amounts of data, out of memory exceptions occur while using strategy.

the strategy working me this: i'm populating collection of entities through objectcontext hits view in sql server database (a ineffectively indexed database @ that). i'm grouping collection iterating through, grouping next level iterating through until highest level element. organize data objects reflect schema (effectively mapping) , setting sequential recordidentifier (i've considered doing in sql, amount of nested joins or ctes ridiculous considering identifier spans header elements child elements). write higher level element (say level2element) children output file. once i'm done writing @ level, move parent group , insert header aggregated data , identifier.

does have thoughts concerning better way output such large xml file?

as far understand question, problem not limited space of storage i.e hdd. have difficulty maintain large xdocument object in memory i.e ram. deal can ignore make such huge object. each recovrdidentifier element can call .tostring() , string. now, append strings file. put declaration , root tag in file , you're done.


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -