Esempio n. 1
0
void PriceList::loadFromXml10(const QXmlStreamAttributes &attrs ) {
    for( QXmlStreamAttributes::const_iterator attrIter = attrs.begin(); attrIter != attrs.end(); ++attrIter ){
        QString nameUp = attrIter->name().toString().toUpper();
        if( nameUp == "ID" ){
            m_d->id = attrIter->value().toString().toUInt();
        } else if( nameUp == "NAME" ){
            setName( attrIter->value().toString() );
        } else if( nameUp == "DESCRIPTION" ){
            setDescription( attrIter->value().toString() );
        }
    }
}
Esempio n. 2
0
int Dialog::initCdr(VCCdrDefines *pvcCdrDefines, QString fileName)
{
    LOG_FUNC(Dialog::initCdr);
    //初始化返回参数
    pvcCdrDefines->clear();

    CCdrBaseInfo BaseInfo;

    //打开xml配置文件
    QFile file;
    //QMessageBox mb;
    //mb.setText(QDir::currentPath() + "/cdrcomfig.xml");
    //mb.exec();
    file.setFileName(fileName);
    if(!file.open(QIODevice::ReadOnly))
    {
        file.setFileName(XML_LOCATION);
        if(!file.open(QIODevice::ReadOnly))
        {
            return FAIL;
        }
    }

    //创建一个新的节点用来处理
    QXmlStreamReader xmlReader(&file);

    CCdrDefine* cCdeDefine = 0;
    VCAttributes vcAttributes;

    for(QXmlStreamReader::TokenType type = xmlReader.readNext();!xmlReader.atEnd(); type = xmlReader.readNext())
    {
        switch(type)
        {
        //开始节点
        case QXmlStreamReader::StartElement:
            #ifdef DEBUG
            qDebug()<<"\t\t\ttype = QXmlStreamReader::StartElement; name = "<<xmlReader.name();
            #endif
            //cdr表示一张话单的开始
            if(!xmlReader.name().compare("cdr"))
                //todo 这里处理一个话单开始的工作,比如创建一个新的对象
            {
                #ifdef DEBUG
                qDebug()<<"new cdr"<<xmlReader.name();
                #endif
                cCdeDefine = new CCdrDefine;

                QXmlStreamAttributes qStreamAttr = xmlReader.attributes();

                //遍历所有的属性,插入可以使用的属性
                for(QXmlStreamAttributes::iterator iter = qStreamAttr.begin();iter != qStreamAttr.end();iter++)
                {
                    if(BaseInfo.checkTypeAttr(BaseInfo.cdr(),iter->name().toString()))
                    {
                        cCdeDefine->vcCdrAttr.addOne(iter->name().toString(),iter->value().toString());
                    }
                }
            }
            else if(!xmlReader.name().compare("filename"))
                //如果这里是filename,就应该创建一个节点,用来存储相关的信息;
                ;
            else if(!xmlReader.name().compare("element"))
                //如果是element,表示是字段了.
                ;
            else if(!xmlReader.name().compare("name") && cCdeDefine != 0)
            {
                //清空上次使用的attributes
                vcAttributes.clear();

                QXmlStreamAttributes qStreamAttr = xmlReader.attributes();

                //在第一个位置添加这个节点的值
                vcAttributes.addOne(xmlReader.name().toString(),xmlReader.readElementText());

                //遍历所有的属性,插入可以使用的属性
                for(QXmlStreamAttributes::iterator iter = qStreamAttr.begin();iter != qStreamAttr.end();iter++)
                {
                    if(BaseInfo.checkTypeAttr(BaseInfo.fileName(),iter->name().toString()))
                    {
                        vcAttributes.addOne(iter->name().toString(),iter->value().toString());
                    }
                }
                #ifdef DEBUG
                qDebug()<<"\tinsert into NameDef, name = "<<xmlReader.name();
                #endif
                //插入到链表中去
                cCdeDefine->addNameDef(vcAttributes);


            }
            else if(!xmlReader.name().compare("field"))
            {
                //清空上次使用的attributes
                vcAttributes.clear();

                QXmlStreamAttributes qStreamAttr = xmlReader.attributes();
                #ifdef DEBUG
                qDebug()<<"\txmlReader.attributes()="<<qStreamAttr.size();
                #endif

                //在第一个位置添加这个节点的值
                vcAttributes.addOne(xmlReader.name().toString(),xmlReader.readElementText());

                //遍历所有的属性,插入可以使用的属性
                for(QXmlStreamAttributes::iterator iter = qStreamAttr.begin();iter != qStreamAttr.end();iter++)
                {
                    if(BaseInfo.checkTypeAttr(BaseInfo.element(),iter->name().toString()))
                    {
                        vcAttributes.addOne(iter->name().toString(),iter->value().toString());
                    }
                }

                #ifdef DEBUG
                qDebug()<<"\tinsert into field, name = "<<xmlReader.name();
                #endif
                //插入到链表中去
                cCdeDefine->addField(vcAttributes);
            }
            break;

        //结束节点
        case QXmlStreamReader::EndElement:
            if(!xmlReader.name().compare("cdr"))
                //todo 这里处理一个话单开始的工作,比如创建一个新的对象
            {
                if(cCdeDefine != 0)
                {
                    #ifdef DEBUG
                    qDebug()<<"push_back cdr"<<xmlReader.name();
                    #endif
                    pvcCdrDefines->push_back(*cCdeDefine);
                }
                delete cCdeDefine;
                cCdeDefine = 0;
            }

            else if(!xmlReader.name().compare("filename"))
                //如果这里是filename,就应该创建一个节点,用来存储相关的信息;
                ;
            else if(!xmlReader.name().compare("element"))
                //如果是element,表示是字段了.
                ;
            else if(!xmlReader.name().compare("name"))
                ;
            else if(!xmlReader.name().compare("field"))
                ;
            break;

        //对于其他类型的节点不用处理
        default:
            ;
        };
    }
    if(xmlReader.hasError())
    {
        qDebug()<<xmlReader.error()<<":"<<xmlReader.errorString();
    }

    return SUCCESS;
}