`

Qt读写xml

    博客分类:
  • Qt
 
阅读更多
test.xml
<?xml version="1.0" encoding="UTF-8"?>
<Start animinal="cat">
    <book>book1</book>
</Start>


simpleWriter.cpp
#include<QXmlStreamWriter>
#include<QFile>
#include<iostream>
using namespace std;

void writeXML(){
    QFile file("test.xml");
    if(not file.open(QIODevice::ReadWrite))
        return;
    QXmlStreamWriter writer(&file);
    writer.setAutoFormatting(true);
    writer.writeStartDocument();
    writer.writeStartElement("Start");
    writer.writeAttribute("animinal","cat");
    writer.writeTextElement("book","book1");
    writer.writeEndElement();//Start
    writer.writeEndDocument();
    file.close();
}

int main(){
    writeXML();
}



dom读写
dom.xml
<Start animinal="cat">
   <book>book1</book>
</Start>


dom.cpp
#include<QDomDocument>
#include<QDomElement>
#include<QFile>
#include<QTextStream>
#include<iostream>
using namespace std;

void writeDom(){
    QFile file("dom.xml");
    if(not file.open(QIODevice::ReadWrite))
        return;
    QDomDocument doc;
    QDomElement startElem = doc.createElement("Start");
    doc.appendChild(startElem);

    startElem.setAttribute("animinal","cat");

    QDomElement bookElem = doc.createElement("book");
    bookElem.appendChild(doc.createTextNode("book1"));
    startElem.appendChild(bookElem);

    QTextStream out(&file);
    doc.save(out,3);
    file.close();
}

void readDom(){
    QFile file("dom.xml");
    if(not file.open(QIODevice::ReadWrite))
        return;
    QDomDocument doc;
    doc.setContent(&file);
    QDomElement startElem = doc.documentElement();
    cout << "animainal:";
    cout << startElem.attribute("animinal").toStdString() << endl;
    cout << "book:";
    cout << startElem.firstChildElement("book").text().toStdString() << endl;
    file.close();
}

int main()
{
    writeDom();
    readDom();
}

animainal:cat
book:book1


sax读写,就不贴代码了,一般情况下,3,5000行的xml用dom不影响效率
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics