自省,关于xml解析及写入

    xml文件解析与写入是我目前接触的第一个跟随项目进度的工程,由于调研是太过于沉迷CSDN,忽略了文档的重要性,调研成果在真实的需求面前不堪一击,让我老大好是头疼,硬生生帮我写了一大半代码才让我彻底搞懂这些玩意儿,这里写一篇博客来记录学到的知识,同时也算是自省吧。
    下面这段摘自Qt creater 快速入门,是对xml文件读写方法的完整介绍:
    QT中的QTXML模块提供了三种方法来对处理xml文档的方式:最常用的是DOM方式,可进行读写;SAX方法,可以进行读取;基于流的方法,分别使用QXmlStreamReader和QXmlStreamWriter来进行读写。同时要在Qt creater中的.pro文件中加入QT +=xml;如果使用VS+QT插件的话,在选项中QT找到xml和QXML √ 即可。
    我这里主要使用的是DOM方式来进行的,这样解析和写入用的是相反的方式,原理都相同,比较方便。
    DOM (QDomDocument Object Model,文档对象模型)提供了一个接口来访问和改变xml文档,QDomDocument对象用来表示整个文档,而文档中所有QDOM的节点都是QDomNode类的子类。
XML文档格式,内容及说明我在另一篇文章中已经详细说明,这里不再赘述,直接开始通过DOM来进行读写。

对XML的解析(从xml文档中提取出有效信息,放入内存中,可以自己设计比如QList类型,也可以直接输出成类似word文档):

            QDomElement configDataRoot = docData.documentElement();//读取根节点
            QDomNodeList rootList= configDataRoot.elementsByTagName("rootList");//读取第一个子节点   rootList节点
            for (int i = 0; i < rootList.count(); i++)    
            {
                        QDomNode serverInfo = rootList.at(i);
                        QDomNodeList serverInfoNode = serverInfo.childNodes();
                        QString madeIp= serverInfoNode.at(i).attributes().namedItem("IP").nodeValue();
                        QString madeIe= serverInfoNode.at(i).attributes().namedItem("Ie").nodeValue().toLower();
                        QDomNode textNodeData = serverInfoNode.at(i);
                        QString textNode = textNodeData.firstChild().nodeValue();
         }
简单的提取了节点属性为IP和Ie的值,并且提取了节点内容,上述代码是把逻辑简化后的结果,主要提取时使用的方法要牢记,下次再让老大帮忙就剁手了!
接下来是保存的方式,其实就是把内存中的数据传进xml,还是通过DOM一系列函数,暂时写这么多,最近天天加班到半夜,再有时间再写完。
待续。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值