Wie erfolgt die XML-Daten in mehrere Dateien durch Überprüfen Dateigröße schreiben

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

  •  08-10-2019
  •  | 
  •  

Frage

Ich erstelle eine XML-Sitemap! Es gibt eine Grenze von 50k Urls oder 10MB Größenbegrenzung. Gibt es eine Möglichkeit, die Größe der Datei und Schreiben in eine neue XML-Datei zu überprüfen, wenn eine Größenbeschränkung von 10 MB erreicht ist? Ich verwende XmlTextWriter (C #) XML-Dateien

erstellen
War es hilfreich?

Lösung

Wenn Sie XmlTextWriter verwenden, können Sie in einem benutzerdefinierten ‚System.IO.Stream‘ passieren könnten die 10MB Größenbegrenzung zu handhaben. Ihre individueller Strom würde behandelt die Überwachung von Dateigröße und eine neue Datei in einem bestimmten Intervall zu schaffen.

So Sie könnten auf etwas entwerfen wie:

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
}

Ich weiß nicht, die Umsetzung der XmlTextWriter sehr gut, aber man kann klug, so sein, dass Sie mit am Ende nicht ein XML-Knoten Spanning zwei Dateien.

Update: Ein besserer Ansatz sein kann, nur die gesamte XML-Datei zu schreiben. Und dann, als ein Post-Prozess aufgeteilt sie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top