0

我正在创建一个 xml 站点地图!有 50k url 或 10MB 大小限制。当达到 10MB 的大小限制时,有没有办法检查文件的大小并写入新的 xml 文件?我正在使用 XmlTextWriter(C#) 创建 xml 文件

4

1 回答 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 回答