Qt C++ парсинг XML файлов. Что выбрать?

486
21 января 2017, 11:52

В Qt с XML файлами можно работать по разному. Например с помощью DOM, SAX, QXmlStream(Reader-Writer). Меня интересуют плюсы и минусы разных подходов и их идеология. В каком случае использовать один подход, а какой в другом. Например где лучше использовать SAX, а где QXmlStream(Writer-Reader). Можно с примерами тонкостей.

Answer 1

Все очень просто и к Qt не имеет отношения.

DOM

плюсы

  • один вызов и все распарсено в дерево, которое можно исследовать вдоль и в поперек
  • дерево легко модифицировать, что бы потом сохранить измененный xml
  • обычно идет с поддержкой XPath, что упрощает различные запросы

минусы

  • нужно много памяти. Беглая оценка - размер xml*3.
  • медленно
  • невозможно парсить неполный xml
SAX плюсы
  • быстрый
  • потребляет мало памяти, хорошие реализации потребляют совсем мало.
минусы
  • только для чтения
  • только в один проход.
  • построено на событиях, иногда бывает сложно использовать.
  • сложно делать выборки
QXmlStream плюсы
  • мне нравиться апи - просто читаешь по тегу
  • должно быть быстро
  • должно быть не требовательно к памяти
минусы
  • похоже, что однопроходный (надо проверить)
  • сложно делать выборки
READ ALSO
Сообщение ответ клиенту с помощью winsock2?

Сообщение ответ клиенту с помощью winsock2?

Как отправить сообщение клиенту средствами winsock2? Пример отправляю сообщение на сервер, и нужно что-бы сервер ответил, принял ли message? Как реализовать...

345
Задача на нахождение в числе подчисла 33 [требует правки]

Задача на нахождение в числе подчисла 33 [требует правки]

Не получается сделать задачу на C++

353
Почему присваивается мусор?

Почему присваивается мусор?

здравствуйте, начинаю въезжать в ассемблер, придумываю себе простой код для примера:

455
Числовые ряды C++

Числовые ряды C++

Есть задание

367