В чем разница между QXml и QDom? - PullRequest
3 голосов
/ 20 октября 2011

В Qt есть несколько разных способов работы с XML. Для простоты я хочу только взглянуть на классы QXml * и классы QDom *.

Я пытаюсь выяснить, какой из них использовать, но они оба имеют похожую функциональность.

В чем основные различия между QXml и QDom?

Гипотетический пример: считывает ли весь файл XML в память, замедляя его при запуске, но быстрее после запуска?

Какие сценарии должны требовать от вас использования одного метода над другим? и почему вы должны использовать один над другим?

Гипотетический пример: допустим, вы делаете «однопроходный» или «многопроходный» ...

1 Ответ

6 голосов
/ 21 октября 2011

Короче говоря, классы QXml* реализуют анализатор XML SAX (простой API для XML), а QDom* реализуют анализатор XML DOM (объектная модель документа).

Основным отличием является то, что SAX является анализатором последовательного доступа, поэтому он анализирует документ по мере его чтения и делает первые фрагменты проанализированных данных доступными практически мгновенно. DOM должен загрузить весь документ в память, чтобы проанализировать его, но это может быть немного проще для обработки с точки зрения накладных расходов кода (для SAX вы должны реализовать класс обработчика XML). В общем, SAX более легкий и быстрый.

В Интернете много читают о сравнении SAX и DOM:

почему синтаксический анализ саксофона происходит быстрее, чем анализ синтаксиса dom? и как работает stax?

http://developerlife.com/tutorials/?p=28

И здесь хороший документ, сравнивающий различные многоплатформенные парсеры XML (включая QXml* и QDom*). Ваш лучший выбор зависит от вашего варианта использования. Если вы работаете с большими XML-документами, вы бы предпочли SAX. Для крошечных XML лучше использовать DOM, поскольку для получения необходимых данных из файла достаточно нескольких строк кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...