Как получить 1000000 записей и записать XML-ленту в файл? - PullRequest
0 голосов
/ 27 мая 2011

Я хотел бы создать консольное приложение ac #, чтобы получить около 1000000 строк данных.

добавить некоторую логику фильтрации в коде и сгенерировать ленту XML.работает нормально, но для 250K строк данных, чем я получаю исключение памяти.

Вот пример кода, который я использую в веб-приложении, мне нужно изменить его консольное приложение и сделать его эффективным.

var xrFeed = new XmlTextWriter(File.Create(@"c:\Items.xml"), Encoding.UTF8);

xrFeed.WriteStartDocument();
xrFeed.WriteStartElement("Name");

IEnumerable<ItemClass> items = _source.GetItems();

if (items != null)
{ 
    foreach (var i in items)
    {                    
        xrFeed.WriteStartElement("ad");

            xrFeed.WriteStartElement("id");
            xrFeed.WriteCData(m.ListingId.ToString());
            xrFeed.WriteEndElement();

            xrFeed.WriteStartElement("firstParameter");
            xrFeed.WriteCData("parameter");
            xrFeed.WriteEndElement();

            xrFeed.WriteStartElement("secondParameter");
            xrFeed.WriteCData("parameter2");
            xrFeed.WriteEndElement();

            xrFeed.WriteStartElement("thirdParameter");
            xrFeed.WriteCData("parameter3");
            xrFeed.WriteEndElement();

        xrFeed.WriteEndElement();
    }

    xrFeed.WriteEndElement();
    xrFeed.WriteEndDocument();

    xrFeed.Flush();
    xrFeed.Close();

    Response.End();
    DataBind();         
}

1 Ответ

2 голосов
/ 27 мая 2011

Попробуйте промывать писатель каждые 1000 предметов или около того. Также вам может потребоваться частично извлечь данные из вашего источника данных.

...