Qt DomDoucment方式读写 xml文件

来源:互联网 发布:工资查询软件 编辑:程序博客网 时间:2024/06/15 04:17
一、包含的基本头文件
#include <QString>
#include <QFile>
#include <QDomDocument>
#include <QTextStream>
#include <QObject>
二、基本操作
1.写xml文件
1).创建根节点:QDomElement root = doc.documentElement("rootName " );
2).创建元素节点:QDomElement element = doc.createElement("nodeName");
3).添加元素节点到根节点:root. appendChild(element);
4).创建元素文本:QDomText nodeText=doc.createTextNode("text");
5).添加元素文本到元素节点:element. appendChild(nodeText);
2.读xml文件 
1).读取根节点:QDomElement root = doc.documentElement();
2).读取第一个子节点:QDomNode node = root.firstChild();
3).读取下一个子节点:node = node.nextSibling();
4).匹配结点标记:node.toElement().tagName() == "note"

5).读取节点文本:no = childNode.toText().data();

#include <QCoreApplication>#include <QString>#include <QFile>#include <QDomDocument>#include <QTextStream>#include <QObject>int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    QFile file("class.xml");    file.open(QIODevice::WriteOnly);    QDomDocument doc;    QDomProcessingInstruction instruction;    instruction = doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");    doc.appendChild(instruction);    QDomElement root = doc.createElement("class");    doc.appendChild(root);    QDomAttr class_attr = doc.createAttribute("name");    class_attr.setValue("class_one");    root.setAttributeNode(class_attr);    QDomText text;    QDomElement student1 = doc.createElement("student");    QDomAttr student1_attr = doc.createAttribute("id");    student1_attr.setValue("1");    student1.setAttributeNode(student1_attr);    QDomElement student2 = doc.createElement("student");    student2.setAttribute("id","2");    text = doc.createTextNode("meng");    student2.appendChild(text);    QDomElement student3 = doc.createElement("student");    QDomElement student4 = doc.createElement("student");    root.appendChild(student1);    root.appendChild(student2);    root.appendChild(student3);    root.appendChild(student4);    QTextStream out(&file);    doc.save(out, 4);    file.close();    return a.exec();}

#include <QCoreApplication>#include <QString>#include <QFile>#include <QDomDocument>#include <QTextStream>#include <QObject>#include <QDebug>int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);        QFile file("class.xml");    if(!file.open(QIODevice::ReadOnly))    {        qDebug()<<"open for read error";    }    QString errorStr;    int errorLine;    int errorColumn;    QDomDocument doc;    if(!doc.setContent(&file, false, &errorStr, &errorLine, &errorColumn))    {        qDebug()<<" setcontent error";        file.close();    }    file.close();    QDomElement root =doc.documentElement();    QDomNode node = root.firstChild();    while(!node.isNull())    {        if(node.isElement())        {            QDomElement element = node.toElement();            qDebug()<<qPrintable(element.tagName())<<qPrintable(element.attribute("id"))                    <<qPrintable(element.text());        }        node = node.nextSibling();    }    return a.exec();}


原创粉丝点击