0

xmlサイトマップを作成しています!50kのURLまたは10MBのサイズ制限があります。10MBのサイズ制限に達したときにファイルのサイズをチェックして新しいxmlファイルに書き込む方法はありますか?XmlTextWriter(C#)を使用してxmlファイルを作成しています

4

1 に答える 1

1

を使用している場合はXmlTextWriter、カスタムの「System.IO.Stream」を渡して、10MBのサイズ制限を処理できます。カスタムストリームは、ファイルサイズの監視と、特定の間隔での新しいファイルの作成を処理します。

したがって、次のような設計を行うことができます。

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
}

XmlTextWriterの実装についてはよくわかりませんが、2つのファイルにまたがる1つのXMLノードになってしまわないように賢くする必要があるかもしれません。

更新:より良いアプローチは、XMLファイル全体を書き込むことです。そして、後処理としてそれらを分割します。

于 2010-11-11T23:13:26.933 に答える