Exemplo n.º 1
0
Arquivo: var.cpp Projeto: Aspenka/SSD
Var Var::fromXML(QXmlStreamReader& xml)
{
	while (xml.tokenType() != QXmlStreamReader::StartElement && !xml.atEnd() && !xml.hasError())
    {
		xml.readNext();
    }
	QString root = xml.name().toString();
	setParam("map",root);
	while (!(xml.tokenType() == QXmlStreamReader::EndElement && xml.name() == root) && !xml.atEnd() && !xml.hasError())
    {
        xml.readNext();
		if (xml.tokenType() == QXmlStreamReader::StartElement)
        {
            Var el;
			el.fromXML(xml);
			if(getType()=="map")
            {
                if(!Map.contains(el.getName()))
                {
                    Map.insert(el.getName(),el);
                }
				else
                {
                    setType("list");
					List<<Map.value(el.getName());
                }
            }
			if(getType()=="list")
            {
                List<<el;
            }
        }
		if (xml.tokenType() == QXmlStreamReader::Characters)
        {
            QString text=xml.text().toString();
			if(!text.startsWith('\n'))
            {
                setType("string");
				String = text;
            }
        }
    }
	return *this;
}