Я создаю карту сайта xml! Существует ограничение в 50 тыс. URL-адресов или ограничение размера 10 МБ. Есть ли способ проверить размер файла и записать в новый файл xml, когда будет достигнут предел размера 10 МБ? Я использую XmlTextWriter (C#) для создания файлов xml.
Как записать данные xml в несколько файлов, проверив размер файла
Ответы (1)
Если вы используете XmlTextWriter
, вы можете передать пользовательский «System.IO.Stream» для обработки ограничения размера 10 МБ. Ваш пользовательский поток будет контролировать размер файла и создавать новый файл с определенным интервалом.
Таким образом, вы можете ориентироваться на что-то вроде:
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-файла. А затем в качестве постобработки их разделили.
person
Larsenal
schedule
11.11.2010