1. 程式人生 > >Qt中QDomDocument,讀取txt檔案和xml檔案,並且修改xml檔案和儲存修改後的檔案

Qt中QDomDocument,讀取txt檔案和xml檔案,並且修改xml檔案和儲存修改後的檔案

此文件main.cpp檔案分為兩部分:

1】上面是讀取txt文件的程式碼

2】下面是讀取和修改xml文件的內容,並且儲存xml修改的程式碼

#include<QGuiApplication>
#include<QQmlApplicationEngine>
#include<QDomDocument>
#include<QFile>
#include<QDomNode>
#include<QDebug>
#include<QTextStream>
#include<QDomNodeList>
int
main(intargc,char*argv[])
{
QGuiApplicationapp(argc,argv);
QQmlApplicationEngineengine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
//讀取txt檔案
//QFilefile("new.txt");
//if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
//qDebug()<<"openfilefalse";
//while(!file.atEnd()){
//QByteArrayline=file.readLine();
//qDebug()<<"line:"<<line;
//}
//讀取xml檔案
QDomDocumentdoc;
QFilefile1("am.xml");
if(!file1.open(QIODevice::ReadOnly))
{
qDebug()<<"openfilefalse";
}
QStringerrorStr;
interrorLine,errorCol;
if(!doc.setContent(&file1,&errorStr,&errorLine,&errorCol))
{
file1.close();
qDebug
()<<"settingfilecontentfalse";
}
file1.close();
QDomElementdocElem=doc.documentElement();
QDomNoden=docElem.firstChild();//
while(!n.isNull())
{
QDomElemente=n.toElement();//trytoconvertthenodetoanelement.
if(!e.isNull()){
if(e.nodeName()=="item")
{
QDomNodeListlist=e.childNodes();
for(inta=0;a<list.size();a++){
QDomNodenode=list.at(a);
if(node.isElement()){
if(node.nodeName()=="num"){
QDomNodeoldnode=node.firstChild();
node.firstChild().setNodeValue("csdn");
QDomNodenewnode=node.firstChild();
node.replaceChild(newnode,oldnode);
qDebug()<<"執行到num裡面,修改num值";
qDebug()<<"num:"<<node.firstChild().nodeValue();
}
if(node.nodeName()=="hei")
{
QDomNodeoldnode=node.firstChild();
node.firstChild().setNodeValue("56");
QDomNodenewnode=node.firstChild();
node.replaceChild(newnode,oldnode);
qDebug()<<"執行到hei裡面,修改hei值";
qDebug()<<node.firstChild().nodeValue();
}
}
}
}
}
if(!e.isNull())
{
qDebug()<<qPrintable(e.tagName())<<endl;//thenodereallyisanelement.
}
n=n.nextSibling();
}
//儲存修改後的xml檔案
QFilefilexml("am.xml");
if(!filexml.open(QFile::WriteOnly|QFile::Truncate))
{
qWarning("error:ParserXml->writeXmlOPerator->file.open\n");
returnfalse;
}
QTextStreamts(&filexml);
ts.reset();
ts.setCodec("utf-8");
doc.save(ts,2,QDomNode::EncodingFromTextStream);
filexml.close();
if(engine.rootObjects().isEmpty())
return-1;
returnapp.exec();
}