PropertyValueParser.cpp
Go to the documentation of this file.00001 #include "PropertyValueParser.h"
00002 #include "PropertyParser.h"
00003 #include "exception/XmlParseException.h"
00004
00005 #include <QtXml/QDomDocument>
00006 #include <QtXml/QDomNode>
00007 #include <QString>
00008 #include <QHash>
00009 #include <QtPlugin>
00010 #include <QtDebug>
00011
00012 using namespace qic;
00013
00014 QVariant
00015 PropertyValueParser::parseProperty (const QDomNode & prop, QHash <QString, QObject *> & parser_map)
00016 {
00017 QDomElement e = prop.toElement();
00018 if(e.tagName() == "value")
00019 {
00020 QDomElement ve = e.firstChild().toElement();
00021 QString tag = ve.tagName();
00022 if (parser_map.contains(tag))
00023 {
00024 QObject * parser_obj = parser_map[tag];
00025 PropertyParser * parser = qobject_cast<PropertyParser *>(parser_obj);
00026 return parser->parseProperty(ve, parser_map);
00027 }
00028 else
00029 {
00030 QString val = e.text();
00031 return QVariant (val);
00032 }
00033 }
00034 else
00035 {
00036 throw XmlParseException (QString("Expecting value, %1 encountered.").arg(e.tagName()));
00037 }
00038 }
00039
00040 Q_EXPORT_PLUGIN2(value_parser, PropertyValueParser)