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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.