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文件。然後作爲後期流程分解它們。