Cómo escribir datos XML en varios archivos mediante la comprobación de tamaño de archivo

StackOverflow https://stackoverflow.com/questions/4160086

  •  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

¿Fue útil?

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ó.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top