Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Быстрое чтение XML


Автор: Coder 9.6.2010, 08:04
Всем привет. использую стандартный шаблон для чтения XML библиотекой от MS.

Код

var
  XML : IXMLDocument;

begin
  CoInitialize(nil);
  XML:=LoadXMLDocument(_File);


.....

end


В файле около 30000 узлов. Моя программа должна загружать данные из XML в свою память, для этого нужно сначала узнать число узлов для выделения памяти. Свойство ChildNodes.Count считает кол-во узлов в моем примере очень долго. Если даже его не вызывать, а читать все, пока не кончится файл, то он так же разбирается медленно. Видимо при вызове Count данные кешируются...

Подскажите, как быстро разобрать XML?

Автор: cemick 9.6.2010, 08:34
XMLDocument впринципе не быстр, как совет можете попробовать использовать jclSimpleXML. В задаче чтения XML всегда присутствует вопрос производительности, если у вас так много узлов, может вам стоит пересмотреть структуру хранения на более простую?

Автор: Coder 9.6.2010, 08:42
Цитата(cemick @ 9.6.2010,  16:34)
XMLDocument впринципе не быстр, как совет можете попробовать использовать jclSimpleXML. В задаче чтения XML всегда присутствует вопрос производительности, если у вас так много узлов, может вам стоит пересмотреть структуру хранения на более простую?

Я читаю файл формата GPX, поэтому структуру менять не могу. Знаю пример приложения, которое так же использует XMLDocument и читает данный файл за пару секунд! Правда написано оно на С++ и "внутренности" не доступны. Вот я и подумал, может есть какие-то скрытые приемы по работе с MS XML ?

jclSimpleXML сейчас глянем...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)