13. april 2010 - 15:27Der er
9 kommentarer og 1 løsning
Splitte XML dokumenter på mere end 2 GB
Hej
Jeg har via en webservice modtaget nogle rimelig store XML-filer indeholdende stamdata på biler. Første gang man kalder disse webservices modtager man alting der ikke er hentet før og det har givet nogle kæmpe XML-filer (4 GB og 6 GB).
Jeg vil gerne sætte et automatisk load op så tingene hentes løbende, men mit ETL-værtkøj understøtter ikke de store initiel XML-filer.
Jeg har ledt efter et splitter program, men det lader til at alle dem der findes er 32-bit og derfor knækker nakken ved 2GB.
Er der derfor en venlig sjæl der har en ide til hvor man får splittet XML-dokumentet op så det kan loopes ind i mindre bider eller alternativt kender til et program der kan håndtere filer af den størrelse.
using System; using System.Xml; using System.Text;
namespace E { public class Program { public static void Main(string[] args) { string infnm = args[0]; string outfnm = args[1]; string splittag = args[2]; int n = 0; XmlReader xr = new XmlTextReader(infnm + ".xml"); XmlTextWriter xtw = null; while (xr.Read()) { if (xr.NodeType == XmlNodeType.Element && xr.Name == splittag) { n++; xtw = new XmlTextWriter(String.Format("{0}_{1:0000}.xml", outfnm, n), Encoding.UTF8); xtw.Formatting = Formatting.Indented; xtw.WriteStartDocument(); xtw.WriteNode(xr, false); xtw.WriteEndDocument(); xtw.Close(); } else { // ignore everything else } } xr.Close(); } } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.