欢迎来到天天文库
浏览记录
ID:18515096
大小:69.50 KB
页数:10页
时间:2018-09-18
《自己收集的qt读写xml资料》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、自己收集的qt读写XML资料[DOM方式](有点乱)(2010-11-0111:22:23)转载标签:杂谈分类:Qt编程我们可以看到,如果所要读取的XML文件不是很大,采用DOM读取方法还是很便捷的,由于我用的也是DOM树读取的方法,所以,本文所介绍的也主要是基于DOM的方法读取。根据常用的操作,我简单的把对XML的操作分为以下几类:1首先对XML文件进行操作,打开文件。这个其实就是对文件进行操作,可以把它直接定义为构造函数,在对对象进行初始化时完成。TopoDataReader::TopoDataReader(constwstri
2、ng&filePath):_filePath(filePath),_qDomDoc("mydocument"),_qFile(QString::fromStdWString(filePath)){if(!_qFile.open(QIODevice::ReadOnly)){return;}if(!_qDomDoc.setContent(&_qFile)){_qFile.close();return;}}2读取XML文件中的节点内容假设XML文件格式如下(1)3、wwork=front>(2)211.87.235.136对于第一种情况,采用如下方法:QDomElementdocElem=_qDomDoc.documentElement();QDomNodenodeswitch=docElem.elementsByTagName("switch");//红色的为标签名QDomElementelemnodeswitch=nodeswitch.toElement();stringsnmpip=qPrintable(elemnodeswitch
3、wwork=front>
4、.attribute("snmpip"));//network的也是如此方法获取对于第二种情况,采用如下方法:直接调用text()API就可以了stringip=qPrintable(elementnodeip.text());但是,假设文件中有多个同样的节点,如下这样用elementsByTagName("b")返回的就是一个childNodes()而不是一个单独的node了。我们可以使用at()方法具体定位。另外,我们还可以使用这样一种方法获取节点的值,假设XML文件如下-+5、hsnmpIp="192.168.120.251"network="front">前端主交换机-192.168.120.251public@120truetruetrue06、UtilizationRatio>50.050.0161trueCZ-5_FAtopLeft我们可以先获取switch节点,然后得到其childNodes(),于是就可以使用at()方法来获取下面的每7、个节点了(注:从0开始)比如说,上面的那个ip节点就是nodeswitch.childNodes().at(3)。这样做得好处就是不用担心重复的问题,只要你确定switch节点确定对了,底下的也就一定能确定了。3返回某个节点下子节点的个数这个简单,也是直接调APIQDomElementdocElem=_qDomDoc.documentElement();QDomNodenodetagname=docElem.elementsByTagName(tagname).at(0);//假设有多个tagname此处选第一个intnum=nod8、etagname.childNodes().size();好了,临时想起来就这么多。以后想起来再添。//=================================================================
5、hsnmpIp="192.168.120.251"network="front">前端主交换机-192.168.120.251public@120truetruetrue06、UtilizationRatio>50.050.0161trueCZ-5_FAtopLeft我们可以先获取switch节点,然后得到其childNodes(),于是就可以使用at()方法来获取下面的每7、个节点了(注:从0开始)比如说,上面的那个ip节点就是nodeswitch.childNodes().at(3)。这样做得好处就是不用担心重复的问题,只要你确定switch节点确定对了,底下的也就一定能确定了。3返回某个节点下子节点的个数这个简单,也是直接调APIQDomElementdocElem=_qDomDoc.documentElement();QDomNodenodetagname=docElem.elementsByTagName(tagname).at(0);//假设有多个tagname此处选第一个intnum=nod8、etagname.childNodes().size();好了,临时想起来就这么多。以后想起来再添。//=================================================================
6、UtilizationRatio>50.050.0161trueCZ-5_FAtopLeft我们可以先获取switch节点,然后得到其childNodes(),于是就可以使用at()方法来获取下面的每
7、个节点了(注:从0开始)比如说,上面的那个ip节点就是nodeswitch.childNodes().at(3)。这样做得好处就是不用担心重复的问题,只要你确定switch节点确定对了,底下的也就一定能确定了。3返回某个节点下子节点的个数这个简单,也是直接调APIQDomElementdocElem=_qDomDoc.documentElement();QDomNodenodetagname=docElem.elementsByTagName(tagname).at(0);//假设有多个tagname此处选第一个intnum=nod
8、etagname.childNodes().size();好了,临时想起来就这么多。以后想起来再添。//=================================================================
此文档下载收益归作者所有