QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
KMLSchemaValidator.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QHash>
4#include <QtCore/QSet>
5#include <QtCore/QStringList>
6
7class QDomDocument;
8class QDomElement;
9
15{
16public:
18
20 bool isValid = true;
21 QStringList errors;
22 QStringList warnings;
23
24 void addError(const QString &msg) { errors.append(msg); isValid = false; }
25 void addWarning(const QString &msg) { warnings.append(msg); }
26 };
27
29 ValidationResult validate(const QDomDocument &doc) const;
30
32 ValidationResult validateFile(const QString &kmlFile) const;
33
35 bool isValidEnumValue(const QString &enumTypeName, const QString &value) const;
36
38 QStringList validEnumValues(const QString &enumTypeName) const;
39
41 bool isValidElement(const QString &elementName) const;
42
44 QStringList validElements() const;
45
46private:
48 void loadSchema();
49 void parseSchemaDocument(const QDomDocument &schemaDoc);
50 void extractEnumTypes(const QDomElement &root);
51 void extractElements(const QDomElement &root);
52
53 void validateElement(const QDomElement &element, ValidationResult &result) const;
54 void validateCoordinates(const QString &coordString, ValidationResult &result) const;
55
56 QHash<QString, QStringList> _enumTypes; // enumTypeName -> valid values
57 QSet<QString> _validElements; // set of valid element names
58 bool _loaded = false;
59};
Validates KML documents against rules extracted from the OGC KML 2.2 XSD schema.
static KMLSchemaValidator * instance()
ValidationResult validate(const QDomDocument &doc) const
Validate a KML document.
ValidationResult validateFile(const QString &kmlFile) const
Validate a KML file.
bool isValidElement(const QString &elementName) const
Check if an element name is defined in the schema.
QStringList validEnumValues(const QString &enumTypeName) const
Get all valid values for an enum type.
bool isValidEnumValue(const QString &enumTypeName, const QString &value) const
Check if a value is valid for a given XSD enum type (e.g., "altitudeModeEnumType")
QStringList validElements() const
Get all valid KML element names.