日志
Qt下读写XML文件
2011-12-30 13:21
最近在做一个项目,需要用到XML配置文件,故网上浏览,看到一篇适合我当前的情况的文章,故在此罗列出来:http://www.cppblog.com/reborntercel/archive/2011/11/14/160058.html,献给那些需要的人。
如下是简要代码: QDomDocument dom; QFile *file = new QFile("books.xml"); if (file->open(QIODevice::ReadOnly)) { dom.setContent(file); // 此处需做错误判断 } file->close(); // 以下代码为解析XML文件中的内容 QDomNodeList books = dom.elementsByTagName("book"); for (int i = 0; i < books.count(); i++) { QDomNode book = books.item(i); if (book.toElement().attribute("ISBN") == isbn) { // 查找ISBN匹配的属性,isbn由用户指定 QDomNodeList attribs = book.toElement().childNodes(); QDomNode node; QString attribNumber,attribContent; for (int j = 0; j < attribs.count(); j++) { node = attribs.item(j); attribNumber = node.toElement().attribute("number"); attribContent = node.toElement().text(); // 在此可添加代码对attribNumber,attribContent作出处理了. } break; } } // 以下代码为写内容进XML文件 QStringList attribs = ""; // 由用户指定 QDomElement bookNode = dom.createElement("book"); carNode.setAttribute("ISBN", isbn); // isbn由用户指定 //此处开始处理attribs字符串列表中的内容 for (int i = 0; i < attribs.count(); i++) { QString attribNumber = QString::number(i+1); // 内容的序号: 01 02 if (i < 10) attribNumber.prepend("0"); QDomText textNode = dom.createTextNode(attribs.at(i)); // 取出每一个字符串 QDomElement attribNode = dom.createElement("attrib"); attribNode.setAttribute("number", attribNumber); attribNode.appendChild(textNode); carNode.appendChild(attribNode); // 属性结束 } QDomNodeList archive = carDetails.elementsByTagName("archive"); archive.item(0).appendChild(carNode); // 写入XML文件中 if (file->open(QIODevice::WriteOnly)) { QTextStream stream(file); archive.item(0).save(stream, 4); file->close(); } <?xml version="1.0" encoding="gb2312" ?> <archive> <book ISBN="9787111267423"> <attrib number="01">书名:C++模板元编程(C++ 领域扛鼎之作,荣耀先生倾情翻译,名著名译)</attrib> <attrib number="02">价格:55元</attrib> <attrib number="03">作者:(美)David Abrahams;Aleksey Gurtovoy</attrib> <attrib number="04">出版社:机械工业出版社</attrib> <attrib number="05">出版日期:2010-01-01</attrib> </book> </archive> 此代码为转载,如有雷同,实属巧合!!! |
下一篇: Qt下开发的应用如何升级
上一篇: Qt下文件拷贝实例