2010-11-11 82 views

回答

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执行得很好,但你可能必须要聪明,这样你不一个XML结束节点跨越两个文件。

更新:一个更好的办法可能是只写整个XML文件。然后作为后期流程分解它们。