0
我正在创建一个xml站点地图!限制为50,000个URL或10MB大小限制。 当达到10MB的大小限制时,是否有办法检查文件的大小并写入新的xml文件?我使用XmlTextWriter(C#)创建xml文件如何通过检查文件大小将xml数据写入多个文件
我正在创建一个xml站点地图!限制为50,000个URL或10MB大小限制。 当达到10MB的大小限制时,是否有办法检查文件的大小并写入新的xml文件?我使用XmlTextWriter(C#)创建xml文件如何通过检查文件大小将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文件。然后作为后期流程分解它们。