Qt IOC Container 3.5


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)