我正在创建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的实现,但是您可能必须聪明,这样您就不会最终获得一个跨越两个文件的XML节点。

更新: 一种更好的方法可能就是仅写整个XML文件。然后作为后处理,将它们分开。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top