Класс QXmlInputSource
Класс QXmlInputSource предоставляет входные данные для подклассов QXmlReader. Подробнее...
| Заголовок: | #include <QXmlInputSource> |
| qmake: | QT += xml |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| QXmlInputSource() | |
| QXmlInputSource(QIODevice *dev) | |
| virtual | ~QXmlInputSource() |
| virtual QString | data() const |
| virtual void | fetchData() |
| virtual QChar | next() |
| virtual void | reset() |
| virtual void | setData(const QString &dat) |
| virtual void | setData(const QByteArray &dat) |
Защищенные функции
| virtual QString | fromRawData(const QByteArray &data, bool beginning = false) |
Подробное описание
Класс QXmlInputSource предоставляет входные данные для подклассов QXmlReader.
Все подклассы QXmlReader считывают входной XML-документ из этого класса.
Этот класс распознает кодировку данных, считывая объявление кодировки в XML-файле, если оно найдено, и считывая данные с использованием соответствующей кодировки. Если объявление кодировки не найдено, предполагается, что данные находятся в UTF-8 или UTF-16 в зависимости от того, найдена ли метка порядка байтов.
Существует два способа заполнения источника ввода данными: можно создать его с помощью QIODevice*, чтобы источник ввода считывал данные из этого устройства. Или можно явно установить данные с помощью одной из функций setData().
Обычно вы создаете QXmlInputSource, который работает с QIODevice*, или создаете пустой QXmlInputSource и устанавливаете данные с помощью setData(). Редко бывают случаи, когда вам нужно смешивать оба метода.
Подклассы QXmlReader используют функцию next() для чтения входного символа за символом. Если вы хотите начать сначала, используйте reset().
Функции data() и fetchData() полезны, если вы хотите что-то сделать с данными, кроме парсинга, например, отобразить исходный XML-файл. Преимущество использования QXmlInputClass в таких случаях состоит в том, что он пытается использовать правильную кодировку.
См. также QXmlReader и QXmlSimpleReader.
Документация по функциям-членам
QXmlInputSource::QXmlInputSource()
Создает источник ввода, не содержащий данных.
См. также setData().
QXmlInputSource::QXmlInputSource(QIODevice *dev)
Создает источник ввода и получает данные из устройства dev. Если dev не открыт, он открывается в режиме только для чтения. Если dev равен 0 или чтение с устройства невозможно, источник ввода не будет содержать данных.
См. также setData(), fetchData() и QIODevice.
[virtual] QXmlInputSource::~QXmlInputSource()
Деструктор.
[virtual] QString QXmlInputSource::data() const
Возвращает данные, содержащиеся в источнике ввода, или пустую строку, если источник ввода не содержит данных.
См. также setData(), QXmlInputSource() и fetchData().
[virtual] void QXmlInputSource::fetchData()
Эта функция считывает больше данных из устройства, установленного во время создания. Если источник ввода уже содержал данные, эта функция сначала удаляет эти данные.
Этот объект не содержит данных после вызова этой функции, если объект был создан без устройства для чтения данных или если эта функция не смогла получить больше данных из устройства.
Есть два случая, когда извлечение данных выполняется неявно другим вызовом функции: во время создания (чтобы объект изначально содержал некоторые начальные данные, если доступно), и во время вызова next() (если данные закончились).
Вам обычно не нужно использовать эту функцию, если вы используете next().
См. также data(), next() и QXmlInputSource().
[virtual protected] QString QXmlInputSource::fromRawData(const QByteArray &data, bool beginning = false)
Эта функция считывает XML-файл из data и пытается распознать кодировку. Она преобразует исходные данные data в QString и возвращает его. Она делает все возможное, чтобы получить правильную кодировку для XML-файла.
Если beginning равно true, эта функция предполагает, что данные начинаются в начале нового XML-документа и ищет объявление кодировки. Если beginning равно false, она преобразует исходные данные, используя кодировку, определенную из предыдущих вызовов.
[virtual] QChar QXmlInputSource::next()
Возвращает следующий символ из источника ввода. Если эта функция достигает конца доступных данных, она возвращает QXmlInputSource::EndOfData. Если вы вызываете next() после этого, она пытается загрузить больше данных, вызвав fetchData(). Если вызов fetchData() приводит к новым данным, эта функция возвращает первый символ этих данных; в противном случае она возвращает QXmlInputSource::EndOfDocument.
Читатели, такие как QXmlSimpleReader, предположат, что конец XML-документа достигнут, если эта функция возвращает QXmlInputSource::EndOfDocument, и проверят, что предоставленный ввод правильно сформирован. Поэтому при переопределении этой функции важно гарантировать, что это поведение дублируется.
См. также reset(), fetchData(), QXmlSimpleReader::parse() и QXmlSimpleReader::parseContinue().
[virtual] void QXmlInputSource::reset()
Эта функция устанавливает позицию, используемую функцией next(), в начало данных, возвращаемых функцией data(). Это полезно, если вы хотите использовать источник ввода для более чем одного разбора.
Примечание: В случае, если базовым источником данных является QIODevice, текущая позиция в устройстве не устанавливается автоматически в начало ввода. Вызовите QIODevice::seek(0) для устройства, чтобы сделать это.
См. также next().
[virtual] void QXmlInputSource::setData(const QString &dat)
Устанавливает данные источника ввода в dat.
Если источник ввода уже содержит данные, эта функция сначала удаляет эти данные.
См. также data().
[virtual] void QXmlInputSource::setData(const QByteArray &dat)
Это перегруженная функция.
Данные dat передаются через правильный кодек текста, прежде чем они будут установлены.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qxmlinputsource.html