Класс QXmlSchemaValidator
Класс QXmlSchemaValidator валидирует XML-документы-экземпляры по отношению к схеме XML W3C. Подробнее...
| Заголовок: | #include <QXmlSchemaValidator> |
| qmake: | QT += xmlpatterns |
| С момента: | Qt 4.6 |
Этот класс был представлен в Qt 4.6.
Примечание: Все функции в этом классе являются перевключительно доступными.
Открытые функции
| QXmlSchemaValidator(const QXmlSchema &schema) | |
| QXmlSchemaValidator() | |
| ~QXmlSchemaValidator() | |
| QAbstractMessageHandler * | messageHandler() const |
| QXmlNamePool | namePool() const |
| QNetworkAccessManager * | networkAccessManager() const |
| QXmlSchema | schema() const |
| void | setMessageHandler(QAbstractMessageHandler *handler) |
| void | setNetworkAccessManager(QNetworkAccessManager *manager) |
| void | setSchema(const QXmlSchema &schema) |
| void | setUriResolver(const QAbstractUriResolver *resolver) |
| const QAbstractUriResolver * | uriResolver() const |
| bool | validate(const QUrl &source) const |
| bool | validate(QIODevice *source, const QUrl &documentUri = QUrl()) const |
| bool | validate(const QByteArray &data, const QUrl &documentUri = QUrl()) const |
Подробное описание
Класс QXmlSchemaValidator загружает, анализирует XML-документ-экземпляр и валидирует его по отношению к схеме XML W3C, которая была скомпилирована с помощью QXmlSchema.
Следующий пример показывает, как загрузить схему XML из локального файла, проверить, является ли она допустимым XML-документом, и использовать ее для валидации XML-документа-экземпляра:
QUrl schemaUrl("file:///home/user/schema.xsd");
QXmlSchema schema;
schema.load(schemaUrl);
if (schema.isValid()) {
QFile file("test.xml");
file.open(QIODevice::ReadOnly);
QXmlSchemaValidator validator(schema);
if (validator.validate(&file, QUrl::fromLocalFile(file.fileName())))
qDebug() << "instance document is valid";
else
qDebug() << "instance document is invalid";
} Версия XML-схемы
Этот класс реализует валидацию схемы в соответствии со спецификацией XML Schema 1.0. http://www.w3.org/XML/Schema.
См. также QXmlSchema и Пример валидации XML-схемы.
Документация по функциям-членам
QXmlSchemaValidator::QXmlSchemaValidator(const QXmlSchema &schema)
Создает валидатор схемы, который будет использовать schema для валидации. Если в валидатор передана пустая схема QXmlSchema, схема, используемая для валидации, должна быть указана в XML-документе-экземпляре через атрибут xsi:schemaLocation или xsi:noNamespaceSchemaLocation.
QXmlSchemaValidator::QXmlSchemaValidator()
Создает валидатор схемы. Схема, используемая для валидации, должна быть указана в XML-документе-экземпляре через атрибут xsi:schemaLocation или xsi:noNamespaceSchemaLocation.
QXmlSchemaValidator::~QXmlSchemaValidator()
Удаляет этот QXmlSchemaValidator.
QAbstractMessageHandler *QXmlSchemaValidator::messageHandler() const
Возвращает обработчик сообщений, который обрабатывает сообщения об анализе и валидации для этого QXmlSchemaValidator.
См. также setMessageHandler().
QXmlNamePool QXmlSchemaValidator::namePool() const
Возвращает пул имен, используемый этим QXmlSchemaValidator для построения имен. Обработчика пула имен нет, так как смешивание пулов имен приводит к ошибкам из-за конфликтов имен.
QNetworkAccessManager *QXmlSchemaValidator::networkAccessManager() const
Возвращает менеджер сети или 0, если он не был установлен.
См. также setNetworkAccessManager().
QXmlSchema QXmlSchemaValidator::schema() const
Возвращает схему, используемую для валидации.
См. также setSchema().
void QXmlSchemaValidator::setMessageHandler(QAbstractMessageHandler *handler)
Изменяет обработчик сообщений для этого QXmlSchemaValidator на handler. Валидатор схемы отправляет все сообщения об анализе и валидации этому обработчику сообщений. QXmlSchemaValidator не берет на себя владение handler.
Обычно достаточен обработчик сообщений по умолчанию. Он записывает сообщения об ошибках и валидации в stderr. Обработчик сообщений по умолчанию включает цветовые коды, если stderr может отображать цвета.
Когда QXmlSchemaValidator вызывает QAbstractMessageHandler::message(), аргументы имеют следующий вид:
| Аргумент message() | Семантика |
|---|---|
| QtMsgType type | Используются только QtWarningMsg и QtFatalMsg. Первый указывает предупреждение, второй — ошибку. |
| const QString & description | XHTML-документ, представляющий фактическое сообщение. Он переводится на текущий язык. |
| const QUrl &identifier | Идентифицирует ошибку с помощью URI, где фрагмент — код ошибки, а остальная часть URI — пространство имен ошибки. |
| const QSourceLocation & sourceLocation | Указывает, где произошла ошибка. |
См. также messageHandler().
void QXmlSchemaValidator::setNetworkAccessManager(QNetworkAccessManager *manager)
Устанавливает менеджер сети на manager. QXmlSchemaValidator не берет на себя владение manager.
См. также networkAccessManager().
void QXmlSchemaValidator::setSchema(const QXmlSchema &schema)
Устанавливает schema, которая будет использоваться для дальнейшей валидации. Если схема пуста, схема, используемая для валидации, должна быть указана в XML-документе-экземпляре через атрибут xsi:schemaLocation или xsi:noNamespaceSchemaLocation.
См. также schema().
void QXmlSchemaValidator::setUriResolver(const QAbstractUriResolver *resolver)
Устанавливает разрешитель URI на resolver. QXmlSchemaValidator не берет на себя владение resolver.
См. также uriResolver().
const QAbstractUriResolver *QXmlSchemaValidator::uriResolver() const
Возвращает разрешитель URI схемы. Если разрешитель URI не задан, Qt XML Patterns будет использовать URI в документах-экземплярах как есть.
Разрешитель URI предоставляет уровень абстракции или полиморфные URI. Разрешитель может переписать логические URI на физические или преобразовать устаревшие или недопустимые URI в допустимые.
Когда Qt XML Patterns вызывает QAbstractUriResolver::resolve(), абсолютный URI — это URI, предписанный спецификацией схемы, а относительный URI — URI, указанный пользователем.
См. также setUriResolver().
END_OF_DOCUMENT_MARKER ```bool QXmlSchemaValidator::validate(const QUrl &source) const
Проверяет XML-документ-экземпляр, прочитанный из source, на соответствие схеме.
Возвращает true если XML-документ-экземпляр соответствует схеме, false в противном случае.
Пример:
const QXmlSchema schema = getSchema();
const QUrl url("http://www.schema-example.org/test.xml");
QXmlSchemaValidator validator(schema);
if (validator.validate(url))
qDebug() << "instance document is valid";
else
qDebug() << "instance document is invalid"; bool QXmlSchemaValidator::validate(QIODevice *source, const QUrl &documentUri = QUrl()) const
Проверяет XML-документ-экземпляр, прочитанный из source с указанным documentUri, на соответствие схеме.
Возвращает true если XML-документ-экземпляр соответствует схеме, false в противном случае.
Пример:
const QXmlSchema schema = getSchema();
QFile file("test.xml");
file.open(QIODevice::ReadOnly);
QXmlSchemaValidator validator(schema);
if (validator.validate(&file, QUrl::fromLocalFile(file.fileName())))
qDebug() << "instance document is valid";
else
qDebug() << "instance document is invalid"; bool QXmlSchemaValidator::validate(const QByteArray &data, const QUrl &documentUri = QUrl()) const
Проверяет XML-документ-экземпляр, прочитанный из data с указанным documentUri, на соответствие схеме.
Возвращает true если XML-документ-экземпляр соответствует схеме, false в противном случае.
Пример:
const QXmlSchema schema = getSchema();
QByteArray data("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
"<test></test>");
QBuffer buffer(&data);
buffer.open(QIODevice::ReadOnly);
QXmlSchemaValidator validator(schema);
if (validator.validate(&buffer))
qDebug() << "instance document is valid";
else
qDebug() << "instance document is invalid";
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qxmlschemavalidator.html