您的位置:首页 > 编程语言 > Qt开发

qt-xml-生成/解析

2016-11-15 10:21 357 查看
生成:

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(); //下一个兄弟节点


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: