Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 268

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
У меня возникла проблема работы с лентой новостей RSS. Для парсинга я хотел использовать компонент TXMLDocument. К сожалению, этот компонент работает только при размещении его на форме, если же я создаю его динамически, то при любой попытке работать с XML-данными он выдает ошибку 'Не был произведен вызов CoInitialize'. Расскажите, пожалуйста, как правильно динамически создать объект типа TXMLDoucment?

Dmitry Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Dmitry (статус: Посетитель)
Вопрос отправлен: 5 января 2009, 22:27
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Лично я пользуюсь сторонним компонентом TECXMLParser и бед не знаю. Он, хоть и наследник TComponent, но я его НИ РАЗУ не кинул на форму. Создаю только в рантайме. Могу прислать, если не найдёшь. И ещё я написал кой-какой модуль с несколькими вспомогательными функциями. Тоже могу поделиться.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 5 января 2009, 22:40
Оценка за ответ: 5

Комментарий к оценке: Спасибо, с ним явно проще разобраться )))

Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 6 января 2009, 00:11; участников в обсуждении: 1.
Вадим К

Вадим К (статус: Академик), 6 января 2009, 00:11 [#1]:

По поводу ошибки, которую выдает программа - она сама намекает, чего не хватает. Она сама просит вызов CoInitialize - так сделаейте его вызов.
А вообще - лучше пользоваться отдельными парсерами - они обычно и быстрее и требуют меньше памяти. В случае rss лучше использовать SAX парсеры. Они работают с большей скоростью, чем DOM парсеры. Основное отличие в них - это то, что SAX парсит документ и налету извлекает узел за узлом. И если где то в конце документа есть ошибка, то о ней можно узнать только когда парсер дойдёт до конца. Также, этот парсер не может двигаться назад по документу. Только сначала в конец. И по этой причине его скорость обычно пропорциональна размеру файла (с некоторой наивностью можно сказать, что прямо пропорциональна). И этот парсер работает только в режиме "только для чтения".
А вот DOM паресер грузит весь документ в память и разбирает его. Да, он может больше, он может проверить корректность документа, но он может сделать только когда загрузит весь документ. Зато документ можно отредактировать и и сохранить изменённым.
И если с всего документа надо вытянуть одно-два поля, то DOM парсер это излишек. К примеру, примитивный SAX парсер пробегает по 9мб xml документу за 3-4 секунды. А DOM парсер может и "умереть":)
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:58
Выполнено за 0.03 сек.