From 6ba303e3ad076a0286363d7ec78a9e50e804170f Mon Sep 17 00:00:00 2001 From: Jorge Gustavo Rocha Date: Sun, 15 Jan 2017 19:47:01 +0000 Subject: [PATCH] SLD parsing: handling ogc:Literal within CssParameter --- src/core/symbology-ng/qgssymbollayerutils.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/core/symbology-ng/qgssymbollayerutils.cpp b/src/core/symbology-ng/qgssymbollayerutils.cpp index 2e7bccc3f60..16b87ca21af 100644 --- a/src/core/symbology-ng/qgssymbollayerutils.cpp +++ b/src/core/symbology-ng/qgssymbollayerutils.cpp @@ -2566,6 +2566,7 @@ QDomElement QgsSymbolLayerUtils::createSvgParameterElement( QDomDocument &doc, c QgsStringMap QgsSymbolLayerUtils::getSvgParameterList( QDomElement &element ) { QgsStringMap params; + QString value; QDomElement paramElem = element.firstChildElement(); while ( !paramElem.isNull() ) @@ -2573,7 +2574,23 @@ QgsStringMap QgsSymbolLayerUtils::getSvgParameterList( QDomElement &element ) if ( paramElem.localName() == QLatin1String( "SvgParameter" ) || paramElem.localName() == QLatin1String( "CssParameter" ) ) { QString name = paramElem.attribute( QStringLiteral( "name" ) ); - QString value = paramElem.firstChild().nodeValue(); + if (paramElem.firstChild().nodeType() == QDomNode::TextNode) + { + value = paramElem.firstChild().nodeValue(); + } + else + { + if (paramElem.firstChild().nodeType() == QDomNode::ElementNode && + paramElem.firstChild().localName() == QLatin1String("Literal")) + { + QgsDebugMsg(paramElem.firstChild().localName()); + value = paramElem.firstChild().firstChild().nodeValue(); + } + else + { + QgsDebugMsg(QString("unexpected child of %1").arg(paramElem.localName())); + } + } if ( !name.isEmpty() && !value.isEmpty() ) params[ name ] = value;