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