内容简介:一.对QDomDocument和QDomnode的理解QDom前缀的都是代表节点类型。所以有,QDomElement代表一个Element节点,而QDomText代表一个Text节点。QDomNode类可以存储任意类型的节点。如果想进一步处理一个节点,首先必须把它转化为正确的数据类型。QDomNode调用toElement()以把它转化成QDomElement,然后调用tagName()来获得元素的标签名称。如果节点不是Element类型,那么toElement()函数就返回一个空QDomElement对
一.对QDomDocument和QDomnode的理解
QDom前缀的都是代表节点类型。所以有,QDomElement代表一个Element节点,而QDomText代表一个Text节点。QDomNode类可以存储任意类型的节点。如果想进一步处理一个节点,首先必须把它转化为正确的数据类型。QDomNode调用toElement()以把它转化成QDomElement,然后调用tagName()来获得元素的标签名称。如果节点不是Element类型,那么toElement()函数就返回一个空QDomElement对象和一个空标签。
二.几种操作:
QFile file(filename);
if(file.open(QFile::ReadOnly | QFile::Text)){
std::cerr<<"Error:cannot read file"<<qPrintable(filename)<<":"<<qPrintable(file.errorString())<<std::endl;
return false;
}
QString errorStr;
int line;
int errorColumn;
QDomDocument doc;//定义一个dom文件
if(!doc.setContent(&file,false,&line,&errorColumn))
{
std::cerr<<"error"<<endl;
}
QDomElement root = doc.docmentElement();
if(root.tagName() != "book")
{
.....
}
(1) 对节点的操作
节点操作:
QDomNode child = QDomElement element.firstChild();
while(!child.isNull())
{
if(child.toElement().tagName() == "myName")
{
}
child = child.nextSibling();
}
(2) XML文件与ini一样,xml通常用来进行软件配置
Qt中实现对xml读写操作的类是QDomDocument相关的类,一般情况下需要包含下列三个头文件:
#include <QFile> #include <QtXml\QtXml> #include <QtXml\QDomDocument>
(3)写XML
主要会用到下面的几个函数:
QDomDocument doc;
QDomProcessingInstruction instruction = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
doc.appendChild(instruction);
QDomElement root = doc.createElement("HInfoData");//创建根节点
doc.appendChild(root);//添加根节点
QDomElement strMac = doc.createElement("Mac");//创建元素节点
root.appendChild(strMac);//添加元素节点到根节点
QDomText strMacNodeText = doc.createTextNode(data._strMac);//创建元素文本
strMac.appendChild(strMacNodeText);//添加元素文本到元素节点
(4)保存xim文件
QFile file("./test.xml");
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text))
return false;
QTextStream out(&file);
out.setCodec("UTF-8");
doc.save(out, 4, QDomNode::EncodingFromTextStream);
file.close();
(5)读xml文件
QDomDocument doc;
QFile file("./test.xml");
if (!file.open(QIODevice::ReadOnly))
{
return false;
}
if (!doc.setContent(&file))
{
file.close();
return false;
}
file.close();
以上所述就是小编给大家介绍的《Qt中对QDomDocument和QDomnode的理解》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Designer Idea
梁景红 / 电子工业出版社 / 2006年 / ¥55.00
这是一本以“目的、信息、设计、创意”作为根脉的关于网页视觉的书籍,畅谈的话题从策划到编辑再到设计,从而讨论“我们要建立怎样的站点,并以何种形式完成它”的问题。 全书共分四个部分,分别是网站建设目的,网站信息内容,页面形式设计,网页创作构思。 四部分有机地结合,形成一个统一的整体。“目的”部分以建设网站的目的为主,带领设计师从建站目的的角度,探讨如何抓住首要问题;如何建立网站雏形;如何打开狭隘的、局......一起来看看 《Web Designer Idea》 这本书的介绍吧!