jinlingren的个人主页

http://www.qtcn.org/bbs/u/126501  [收藏] [复制]

jinlingren

ARM - linux - qt

  • 28

    关注

  • 21

    粉丝

  • 15

    访客

  • 等级:新手上路
  • 总积分:7
  • 男,1989-08-14

最后登录:2015-08-19

更多资料

日志

Qt下读写XML文件

2012-01-12 08:58
最近在做一个项目,需要用到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>
此代码为转载,如有雷同,实属巧合!!!
分类:默认分类|回复:0|浏览:507|全站可见|转载
 

下一篇: 《转》怎样开发Chrome浏览器的插件?

上一篇:

Powered by phpwind v8.7 Certificate Copyright Time now is:05-03 01:21
©2005-2016 QTCN开发网 版权所有 Gzip disabled