Comment écrire des données XML dans plusieurs fichiers en vérifiant la taille du fichier

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

  •  08-10-2019
  •  | 
  •  

Question

Je crée un sitemap xml! Il y a une limite de 50k ou urls limite de taille de 10MB. Y at-il un moyen de vérifier la taille du fichier et d'écrire dans un nouveau fichier xml lorsqu'une limite de taille de 10 Mo est atteinte? J'utilise XmlTextWriter (C #) pour créer des fichiers xml

Était-ce utile?

La solution

Si vous utilisez XmlTextWriter, vous pouvez passer une commande « System.IO.Stream » pour gérer la limite de taille de 10MB. Votre commande flux gérerait le contrôle de la taille du fichier et la création d'un nouveau fichier à un certain intervalle.

Alors vous pourriez concevoir vers quelque chose comme:

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
}

Je ne sais pas la mise en œuvre de XmlTextWriter très bien, mais vous pouvez avoir à être intelligent pour que vous ne finissent pas avec un noeud XML couvrant deux fichiers.

Mise à jour: Une meilleure approche peut être d'écrire simplement le fichier XML entier. Et puis comme post-traitement les séparer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top