qt-xml-生成/解析

来源:互联网 发布:爆吧软件 编辑:程序博客网 时间:2024/05/07 05:02

生成:

        QString s1("ssssssssss");
        QString s2("wwwwwwwwww");
        QString s3("1111111111");
        QString s4("text");
        QString s5("处理成功");
        QDomDocument doc("myxml");
        QDomElement root = doc.createElement("xml");
        doc.appendChild(root);
        QDomElement ToUser = doc.createElement("ToUserName");
        root.appendChild(ToUser);
        QDomText ToUsername = doc.createTextNode(s2);
        ToUser.appendChild(ToUsername);
        QDomElement FromUser = doc.createElement("FromUserName");
        root.appendChild(FromUser);
        QDomText FromUsername = doc.createTextNode(s1);
        FromUser.appendChild(FromUsername);
        QDomElement CreateTime = doc.createElement("CreateTime");
        root.appendChild(CreateTime);
        QDomText time = doc.createTextNode(s3);
        CreateTime.appendChild(time);
        QDomElement MsgType = doc.createElement("MsgType");
        root.appendChild(MsgType);
        QDomText type = doc.createTextNode(s4);
        MsgType.appendChild(type);
        QDomElement Content = doc.createElement("Content");
        root.appendChild(Content);
        QDomText text = doc.createTextNode(s5);
        Content.appendChild(text);
        QString xml = doc.toString();
        qDebug()<<"xml:"<<xml;
解析:
    QDomDocument doc; //新建QDomDocument类对象
    int row = 0, column = 0;
    QString error = "";
    if (!doc.setContent(QString(data),false,&error,&row,&column))
    {
        qDebug() << "failed:" << row << "---" << column <<":" <<error;
        return;
    }
    //解析各个接点,具体代码如下:
    QDomElement docElem = doc.documentElement(); //返回根元素
    QDomNode n = docElem.firstChild(); //返回根节点的第一个子节点
    //**************************************************************************************************************将元素记录
    QString ToUserName;//接收方
    QString FromUserName;//发送方
    QString CreateTime;//创建时间
    QString MsgType;//类型
    QString Event;//事件
    QString EventKey;//命令码
    QString Content;//文本消息内容
    QString MsgId;//消息id,64位整型
    QString name;
    while(!n.isNull())
    { //如果节点不为空
        if (n.isElement()) //如果节点是元素
        {
            QDomElement e = n.toElement(); //将其转换为元素
            //qDebug()<<"返回元素标记:"<<qPrintable(e.tagName())<<"元素属性的值:"<<qPrintable(e.text());
            name=qPrintable(e.tagName());
            QDomNodeList list = e.childNodes(); //获得元素e的所有子节点的列表
            for(int i=0; i<list.count(); i++) //遍历该列表
            {
                QDomNode node = list.at(i);
               if(node.isElement())
                    qDebug()<<"  qPrintable(node.toElement().tagName()):"<<qPrintable(node.toElement().tagName())
                        <<"qPrintable(node.toElement().text())"<<qPrintable(node.toElement().text());
            }
            if(name.compare("ToUserName")==0){ToUserName=qPrintable(e.text());}
            else if(name.compare("FromUserName")==0){FromUserName=qPrintable(e.text());}
            else if(name.compare("CreateTime")==0){CreateTime=qPrintable(e.text());}
            else if(name.compare("MsgType")==0){MsgType=qPrintable(e.text());}
            else if(name.compare("Event")==0){Event=qPrintable(e.text());}
            else if(name.compare("EventKey")==0){EventKey=qPrintable(e.text());}
            else if(name.compare("Content")==0){Content=qPrintable(e.text());}
            else if(name.compare("MsgId")==0){MsgId=qPrintable(e.text());}
            else{qDebug()<<"error:1004";}
        }
        n = n.nextSibling(); //下一个兄弟节点
   




0 0
原创粉丝点击