Spec-Zone.ru › Qt 6.0

Изменения в Qt XML

Qt 6 — результат осознанной работы по повышению эффективности и удобства использования фреймворка.

Мы стараемся сохранять бинарную и исходную совместимость для всех публичных API в каждом релизе. Но некоторые изменения были неизбежны, чтобы сделать Qt лучшим фреймворком.

В этой теме мы обобщаем эти изменения в Qt XML и предоставляем руководство по их обработке.

Простое API для парсера XML (SAX)

QXmlStreamReader

В Qt6 все SAX классы были удалены из Qt XML, пожалуйста, используйте QXmlStreamReader для чтения XML-файлов. Вот несколько простых шагов по переносу вашего текущего кода на QXmlStreamReader:

Например, если у вас есть код, как

QFile *file = new QFile(...);
QXmlInputSource *source = new QXmlInputSource(file);

Handler *handler = new Handler;

QXmlSimpleReader xmlReader;
xmlReader.setErrorHandler(handler);
xmlReader.setContentHandler(handler);

if (xmlReader.parse(source)) {
    ... // do processing
} else {
    ... // do error handling
}

вы можете переписать его как

QFile file = ...;
QXmlStreamReader reader(&file);

while (!reader.atEnd()) {
    reader.readNext();
    ... // do processing
}
if (reader.hasError()) {
    ... // do error handling
}

QDom и QDomDocument

В Qt6, SAX классы были удалены, и поэтому QDomDocument больше не может их использовать. Именно поэтому он был перереализован с использованием QXmlStreamReader. Это приводит к некоторым изменениям в поведении:

  • Значения атрибутов будут нормализованы. Например, <tag attr=" a \n b " /> будет эквивалентно <tag attr="a b"/>.
  • Идентичные квалифицированные имена атрибутов больше не будут разрешены, т.е. атрибуты элемента должны иметь уникальные имена.
  • Необъявленные префиксы имен пространств имён больше не будут разрешены.

Если вы используете QDomDocument и полагаетесь на какой-либо из этих аспектов, пожалуйста, обновите свой код и XML-документы соответственно.

Библиотека совместимости Qt Core5

Если ваше приложение или библиотека не могут быть перенесены прямо сейчас, QXmlSimpleReader и связанные классы всё ещё существуют в Qt5Compat для поддержания работы старых кодовых баз. Если вы хотите продолжать использовать эти классы SAX, вам нужно связаться с новым модулем Qt5Compat и добавить эту строку в ваш qmake .pro файл:

QT += core5compat

В случае, если вы уже перенесли своё приложение или библиотеку в систему сборки cmake, добавьте следующее в ваш CMakeList.txt:

PUBLIC_LIBRARIES
    Qt::Core5Compat

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/xml-changes-qt6.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API