您的位置:首页 > 编程语言 > Qt开发

Qt DomDoucment方式读写 xml文件

2013-09-01 23:23 330 查看
一、包含的基本头文件

#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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: