如何通过检查文件大小来将XML数据写入多个文件
-
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的实现,但是您可能必须聪明,这样您就不会最终获得一个跨越两个文件的XML节点。
更新: 一种更好的方法可能就是仅写整个XML文件。然后作为后处理,将它们分开。
不隶属于 StackOverflow