|
Вопрос # 2 268/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
У меня возникла проблема работы с лентой новостей RSS. Для парсинга я хотел использовать компонент TXMLDocument. К сожалению, этот компонент работает только при размещении его на форме, если же я создаю его динамически, то при любой попытке работать с XML-данными он выдает ошибку 'Не был произведен вызов CoInitialize'. Расскажите, пожалуйста, как правильно динамически создать объект типа TXMLDoucment?
 |
Вопрос задал: 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 парсер может и "умереть"
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|