Cómo escribir datos XML en varios archivos mediante la comprobación de tamaño de archivo
-
08-10-2019 - |
Pregunta
Estoy creando un mapa del sitio XML! Hay un límite de 50k URLs o límite de tamaño de 10 MB. ¿Hay una manera de comprobar el tamaño del archivo y de escritura a un nuevo archivo XML cuando se alcanza un límite de tamaño de 10 MB? Estoy usando XmlTextWriter (C #) para crear archivos XML
Solución
Si está utilizando XmlTextWriter
, que podría pasar en una costumbre 'System.IO.Stream' para manejar el límite de tamaño de 10 MB. Su costumbre corriente manejaría el monitoreo del tamaño del archivo y la creación de un nuevo archivo a un intervalo determinado.
Así que es posible diseñar hacia algo como:
var folder = @"C:\temp";
var maxSizeInBytes = 10240;
var stream = new SegmentedStream(folder, maxSizeInBytes);
var xmlWriter = new XmlTextWriter(stream, Encoding.UTF8);
int maxRecords = 50000;
int i = 0;
foreach (var url in UrlList){
i++;
if (i == maxRecords){
stream.StartNewFile(); // custom method on your SegmentedStream class
i == 0;
}
// TODO: write URL using xmlWriter
// explicitly calling Flush on the xmlWriter, may be appropriate
}
No sé la aplicación de la XmlTextWriter muy bien, pero puede que tenga que ser tan inteligente que no termina con un nodo XML que abarca dos archivos.
Actualización: Un mejor enfoque puede ser simplemente escribir todo el archivo XML. Y luego como un post-proceso les separó.