ファイルサイズをチェックしてXMLデータを複数のファイルに書き込む方法

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

  •  08-10-2019
  •  | 
  •  

質問

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

役に立ちましたか?

解決

使用している場合 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ファイル全体を書くだけです。そして、ポストプロセスがそれらを分割すると。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top