У меня есть веб-приложение, которое создает XML-каналы на лету, в зависимости от критериев, переданных через строку запроса.
Это очень простое приложение: оно читает переменные строки запроса и использует их дляформатировать данные (кэшированные данные из базы данных) в соответствующий формат XML.
Возвращенный файл XML имеет размер около 25 МБ ... данных много.
Я использую XmlTextWriter длясоздайте XML, а затем верните его запрашивающему как «application / octet-stream» - вложение, которое они могут загрузить.
Вопрос в том, что сборка XML, похоже, использует 100% ЦП и вызываетпроблемы с моими другими приложениями.
У кого-нибудь есть опыт создания таких больших файлов XML?Какие-нибудь советы по снижению нагрузки на процессор?
Пример кода:
map.WriteRaw("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
map.WriteStartElement("rss");
map.WriteAttributeString("version", "2.0");
map.WriteAttributeString("xmlns:g", "http://base.google.com/ns/1.0");
map.WriteStartElement("channel");
map.WriteElementString("link", "http://www.mywebsite.com...");
ProductCollection items = Product.GetCachedSiteProducts();
foreach (Product p in items)
{
map.WriteStartElement("item");
........
map.WriteElementString("description", p.Description);
map.WriteElementString("g:id", p.SiteSku);
map.WriteElementString("g:condition", "new");
map.WriteElementString("g:price", p.Price.ToString() + " USD");
...............
map.WriteEndElement(); //item
}
}
map.WriteEndElement();//channel
map.WriteEndElement();//rss
Response.Write(sw.ToString());
ОБНОВЛЕНИЕ: Я отвечаю на свой вопрос ... спасибо тем, кто спросилМне нужно было опубликовать больше кода, это было легко, когда я посмотрел более внимательно.
Код использовал «Response.write (map.ToString ())» для вывода xml.Вау, это неэффективно.Буду обновлять код.Спасибо всем!