QGIS API Documentation
2.0.1-Dufour
|
#include <qgsgmlschema.h>
Public Member Functions | |
QgsGmlSchema () | |
~QgsGmlSchema () | |
bool | parseXSD (const QByteArray &xml) |
Get fields info from XSD. | |
bool | guessSchema (const QByteArray &data) |
Guess GML schema from data if XSD does not exist. | |
QStringList | typeNames () const |
Get list of dot separated paths to feature classes parsed from GML or XSD. | |
QList< QgsField > | fields (const QString &typeName) |
Get fields for type/class name parsed from GML or XSD. | |
QStringList | geometryAttributes (const QString &typeName) |
Get list of geometry attributes for type/class name. |
Private Types | |
enum | ParseMode { none, boundingBox, featureMember, feature, attribute, geometry } |
Private Member Functions | |
void | startElement (const XML_Char *el, const XML_Char **attr) |
XML handler methods. | |
void | endElement (const XML_Char *el) |
void | characters (const XML_Char *chars, int len) |
QString | readAttribute (const QString &attributeName, const XML_Char **attr) const |
Reads attribute as string. | |
QWidget * | findMainWindow () const |
Returns pointer to main window or 0 if it does not exist. | |
QList< QDomElement > | domElements (const QDomElement &element, const QString &path) |
Get dom elements by path. | |
QDomElement | domElement (const QDomElement &element, const QString &path) |
Get dom element by path. | |
QList< QDomElement > | domElements (QList< QDomElement > &elements, const QString &attr, const QString &attrVal) |
Filter list of elements by attribute value. | |
QDomElement | domElement (const QDomElement &element, const QString &path, const QString &attr, const QString &attrVal) |
Get dom element by path and attribute value. | |
QString | stripNS (const QString &name) |
Strip namespace from element name. | |
QString | xsdComplexTypeGmlBaseType (const QDomElement &element, const QString &name) |
Find GML base type for complex type of given name. | |
bool | xsdFeatureClass (const QDomElement &element, const QString &typeName, QgsGmlFeatureClass &featureClass) |
Get feature class information from complex type recursively. | |
ParseMode | modeStackTop () |
Get safely (if empty) top from mode stack. | |
ParseMode | modeStackPop () |
Safely (if empty) pop from mode stack. |
Static Private Member Functions | |
static void | start (void *data, const XML_Char *el, const XML_Char **attr) |
static void | end (void *data, const XML_Char *el) |
static void | chars (void *data, const XML_Char *chars, int len) |
Private Attributes | |
QStack< ParseMode > | mParseModeStack |
Keep track about the most important nested elements. | |
QString | mStringCash |
This contains the character data if an important element has been encountered. | |
QgsFeature * | mCurrentFeature |
QString | mCurrentFeatureId |
int | mFeatureCount |
QString | mAttributeName |
QString | mCoordinateSeparator |
Coordinate separator for coordinate strings. | |
QString | mTupleSeparator |
Tuple separator for coordinate strings. | |
int | mLevel |
Depth level, root element is 0. | |
int | mSkipLevel |
Skip all levels under this. | |
QStringList | mParsePathStack |
Path to current level. | |
QString | mCurrentFeatureName |
QStringList | mGeometryTypes |
QMap< QString, QgsGmlFeatureClass > | mFeatureClassMap |
Definition at line 74 of file qgsgmlschema.h.
|
private |
Definition at line 102 of file qgsgmlschema.h.
QgsGmlSchema::QgsGmlSchema | ( | ) |
Definition at line 59 of file qgsgmlschema.cpp.
References mGeometryTypes.
QgsGmlSchema::~QgsGmlSchema | ( | ) |
Definition at line 67 of file qgsgmlschema.cpp.
|
private |
Definition at line 500 of file qgsgmlschema.cpp.
References attribute, mLevel, modeStackTop(), mSkipLevel, and mStringCash.
|
inlinestaticprivate |
Definition at line 124 of file qgsgmlschema.h.
Referenced by guessSchema().
|
private |
Get dom element by path.
Definition at line 306 of file qgsgmlschema.cpp.
References domElements().
Referenced by xsdComplexTypeGmlBaseType(), and xsdFeatureClass().
|
private |
Get dom element by path and attribute value.
Definition at line 324 of file qgsgmlschema.cpp.
References domElements().
|
private |
Get dom elements by path.
Definition at line 272 of file qgsgmlschema.cpp.
References stripNS().
Referenced by domElement(), parseXSD(), and xsdFeatureClass().
|
private |
Filter list of elements by attribute value.
Definition at line 311 of file qgsgmlschema.cpp.
|
inlinestaticprivate |
Definition at line 120 of file qgsgmlschema.h.
Referenced by guessSchema().
|
private |
Definition at line 419 of file qgsgmlschema.cpp.
References attribute, featureMember, fields(), geometryAttributes(), GML_NAMESPACE, mAttributeName, MathUtils::max(), mCurrentFeatureName, mFeatureClassMap, mLevel, modeStackPop(), modeStackTop(), mParseModeStack, mParsePathStack, mSkipLevel, mStringCash, NS_SEPARATOR, QgsDebugMsgLevel, QgsField::setType(), and QgsField::type().
QList< QgsField > QgsGmlSchema::fields | ( | const QString & | typeName | ) |
Get fields for type/class name parsed from GML or XSD.
Definition at line 521 of file qgsgmlschema.cpp.
References mFeatureClassMap.
Referenced by endElement().
|
private |
Returns pointer to main window or 0 if it does not exist.
QStringList QgsGmlSchema::geometryAttributes | ( | const QString & | typeName | ) |
Get list of geometry attributes for type/class name.
Definition at line 527 of file qgsgmlschema.cpp.
References mFeatureClassMap.
Referenced by endElement(), and startElement().
bool QgsGmlSchema::guessSchema | ( | const QByteArray & | data | ) |
Guess GML schema from data if XSD does not exist.
Currently only recognizes UMN Mapserver GetFeatureInfo GML response.
data | GML data |
Definition at line 330 of file qgsgmlschema.cpp.
References chars(), end(), MathUtils::max(), mLevel, mSkipLevel, NS_SEPARATOR, QgsDebugMsg, and start().
|
inlineprivate |
Safely (if empty) pop from mode stack.
Definition at line 168 of file qgsgmlschema.h.
Referenced by endElement().
|
inlineprivate |
Get safely (if empty) top from mode stack.
Definition at line 165 of file qgsgmlschema.h.
Referenced by characters(), endElement(), and startElement().
bool QgsGmlSchema::parseXSD | ( | const QByteArray & | xml | ) |
Get fields info from XSD.
Definition at line 86 of file qgsgmlschema.cpp.
References domElements(), mFeatureClassMap, stripNS(), xsdComplexTypeGmlBaseType(), and xsdFeatureClass().
|
private |
Reads attribute as string.
Definition at line 72 of file qgsgmlschema.cpp.
|
inlinestaticprivate |
Definition at line 116 of file qgsgmlschema.h.
Referenced by guessSchema().
|
private |
XML handler methods.
Definition at line 344 of file qgsgmlschema.cpp.
References attribute, feature, featureMember, geometryAttributes(), GML_NAMESPACE, mAttributeName, mCurrentFeatureName, mFeatureClassMap, mGeometryTypes, mLevel, modeStackTop(), mParseModeStack, mParsePathStack, mSkipLevel, mStringCash, NS_SEPARATOR, and QgsDebugMsgLevel.
|
private |
Strip namespace from element name.
Definition at line 267 of file qgsgmlschema.cpp.
Referenced by domElements(), parseXSD(), xsdComplexTypeGmlBaseType(), and xsdFeatureClass().
QStringList QgsGmlSchema::typeNames | ( | ) | const |
Get list of dot separated paths to feature classes parsed from GML or XSD.
Definition at line 516 of file qgsgmlschema.cpp.
References mFeatureClassMap.
|
private |
Find GML base type for complex type of given name.
element | input element |
name | complex type name |
Definition at line 244 of file qgsgmlschema.cpp.
References domElement(), and stripNS().
Referenced by parseXSD().
|
private |
Get feature class information from complex type recursively.
Definition at line 129 of file qgsgmlschema.cpp.
References domElement(), domElements(), QgsGmlFeatureClass::fields(), QgsGmlFeatureClass::geometryAttributes(), mGeometryTypes, QgsDebugMsg, and stripNS().
Referenced by parseXSD().
|
private |
Definition at line 178 of file qgsgmlschema.h.
Referenced by endElement(), and startElement().
|
private |
Coordinate separator for coordinate strings.
Usually ","
Definition at line 180 of file qgsgmlschema.h.
|
private |
Definition at line 175 of file qgsgmlschema.h.
|
private |
Definition at line 176 of file qgsgmlschema.h.
|
private |
Definition at line 195 of file qgsgmlschema.h.
Referenced by endElement(), and startElement().
|
private |
Definition at line 201 of file qgsgmlschema.h.
Referenced by endElement(), fields(), geometryAttributes(), parseXSD(), startElement(), and typeNames().
|
private |
Definition at line 177 of file qgsgmlschema.h.
|
private |
Definition at line 198 of file qgsgmlschema.h.
Referenced by QgsGmlSchema(), startElement(), and xsdFeatureClass().
|
private |
Depth level, root element is 0.
Definition at line 187 of file qgsgmlschema.h.
Referenced by characters(), endElement(), guessSchema(), and startElement().
|
private |
Keep track about the most important nested elements.
Definition at line 172 of file qgsgmlschema.h.
Referenced by endElement(), and startElement().
|
private |
Path to current level.
Definition at line 193 of file qgsgmlschema.h.
Referenced by endElement(), and startElement().
|
private |
Skip all levels under this.
Definition at line 190 of file qgsgmlschema.h.
Referenced by characters(), endElement(), guessSchema(), and startElement().
|
private |
This contains the character data if an important element has been encountered.
Definition at line 174 of file qgsgmlschema.h.
Referenced by characters(), endElement(), and startElement().
|
private |