Qt中使用QXmlStreamWriter、QXmlStreamReader类的xml读写的操作:
code:
void xml::xmlStreamWriter()
{
QString strFile("test.xml");
QFile *file = new QFile(strFile);
if (!file->open(QFile::WriteOnly | QFile::Text)) {
qDebug() << QString("Cannot write file %1(%2).").arg(strFile).arg(file->errorString());
return;
}
QXmlStreamWriter* wStream = new QXmlStreamWriter(file);
wStream->setCodec("UTF-8"); // xml编码
wStream->setAutoFormatting(true); // 设置自动格式化启用,默认禁止自动化格式
wStream->writeStartDocument(); // 开始文档
wStream->writeStartElement("userinfo"); // 根节点
wStream->writeAttribute("attr", "attr"); // 添加根节点属性
wStream->writeTextElement("usersname", "100001"); // 子节点
wStream->writeTextElement("password", "123456");
wStream->writeTextElement("rememberPasswd", "false"); // 子节点
wStream->writeTextElement("autoLogin", "false");
wStream->writeEndElement();
wStream->writeEndDocument();
file->close();
}
void xml::xmlStreamReader()
{
QString strFile("test.xml");
QFile* file = new QFile(strFile);
if (!file->open(QFile::ReadOnly | QFile::Text)) {
qDebug() << QString("Cannot read file %1(%2).").arg(strFile).arg(file->errorString());
return;
}
QXmlStreamReader* rStream = new QXmlStreamReader(file);
while (!rStream->atEnd()) {
QXmlStreamReader::TokenType nType = rStream->readNext();
if( nType == QXmlStreamReader::StartElement ){
QString nameStr = rStream->name().toString();
QXmlStreamAttributes Attributes = rStream->attributes();
if(Attributes.hasAttribute("attr")){
qDebug()<<Attributes.value("attr").toString();
}
if(QString::compare(nameStr,QString("usersname")) == 0) {
rStream->readNext();
useInfo->insert("usersname", rStream->text().toString());
qDebug() << QStringLiteral("id:%1").arg(rStream->text().toString());
}
else if(QString::compare(nameStr,QString("password")) == 0) {
rStream->readNext();
useInfo->insert("password", rStream->text().toString());
qDebug() << QStringLiteral("password:%1").arg(rStream->text().toString());
}
else if(QString::compare(nameStr,QString("rememberPasswd")) == 0) {
rStream->readNext();
useInfo->insert("rememberPasswd", rStream->text().toString());
qDebug() << QStringLiteral("rememberPasswd:%1").arg(rStream->text().toString());
}
else if(QString::compare(nameStr,QString("autoLogin")) == 0) {
rStream->readNext();
useInfo->insert("autoLogin", rStream->text().toString());
qDebug() << QStringLiteral("autoLogin:%1").arg(rStream->text().toString());
}
}
}
}