我正在创建一个 xml 站点地图!有 50k url 或 10MB 大小限制。当达到 10MB 的大小限制时,有没有办法检查文件的大小并写入新的 xml 文件?我正在使用 XmlTextWriter(C#) 创建 xml 文件
问问题
1327 次
1 回答
1
如果您使用的是XmlTextWriter
,您可以传入自定义的“System.IO.Stream”来处理 10MB 的大小限制。您的自定义 Stream 将处理文件大小的监视并以一定的时间间隔创建一个新文件。
所以你可能会设计类似的东西:
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 文件。然后作为后期处理将它们分开。
于 2010-11-11T23:13:26.933 回答