linux cpp xml,xml.cpp · 赵俊超/linux_spy - Gitee.com

#include "xml.h"

void xml::read_conf(QString path)

{

server_conf = new struct _server_conf;

QDomDocument document;

xml_path = path;

QFileInfo fileInfo(path);

qDebug()<

if(!fileInfo.isFile()){

/*配置文件不存在*/

}

QFile file(path);

if(!file.open(QFile::ReadOnly | QFile::Text)) {

qDebug() << "open error";

return ;

}

QString error;

int row = 0, column = 0;

if(!document.setContent(&file, false, &error, &row, &column))

{

qDebug() << "prase error: "<

return ;

}

/*读取root节点*/

QDomElement root_node = document.documentElement();

qDebug() << root_node.tagName();

QDomNodeList child_list = root_node.childNodes();

qDebug()<< "child nodes = "<

/*枚举读取子节点*/

for(int i=0; i< child_list.count(); i++){

QDomNode child_node = child_list.item(i);

QDomElement child_element = child_node.toElement();

if(child_element.tagName() == "group_conf")prase_group_conf(child_element);

if(child_element.tagName() == "down_conf")prase_down_conf(child_element);

}

file.close();

}

/*读取每组的版本信息*/

void xml::prase_group_conf(QDomElement child_element)

{

QDomNodeList group_child_list = child_element.childNodes();

/*枚举读取子节点*/

for(int i=0; i< group_child_list.count(); i++){

QDomNode child_node = group_child_list.item(i);

QDomElement child_element = child_node.toElement();

struct _version_inf *info = new struct _version_inf;

info->group_id = child_element.attributeNode("id").value();

qDebug()<

info->version = child_element.attributeNode("version").value();

qDebug()<

info->file_path = child_element.attributeNode("path").value();

qDebug()<

server_conf->version_inf_list.append(info);

}

}

void xml::prase_down_conf(QDomElement child_element)

{

server_conf->max_down = child_element.attributeNode("max_down").value();

}

void xml::add_new_version(void)

{

QDomDocument document;

QFile file(xml_path);

if(!file.open(QFile::ReadWrite | QFile::Text))

{

qDebug() << "open error";

return ;

}

QString error;

int row = 0, column = 0;

if(!document.setContent(&file, false, &error, &row, &column))

{

qDebug() << "prase error";

return ;

}

/*读取root节点*/

QDomElement root_node = document.documentElement();

if(root_node.tagName() != "lus_server"){

qDebug()<

}

QDomNodeList child_list = root_node.childNodes();

QDomNode child_node;

QDomElement child_element;

int i=0;

/*枚举读取子节点*/

for(i=0; i< child_list.count(); i++){

child_node = child_list.item(i);

child_element = child_node.toElement();

if(child_element.tagName() == "group_conf")break;

}

if(i != child_list.count()){

QDomNodeList group_child_list = child_element.childNodes();

int j=0;

/*枚举ID是否存在*/

for(j=0; j< group_child_list.count(); j++){ //修改版本信息

QDomNode child_node = group_child_list.item(j);

QDomElement child_element = child_node.toElement();

if( child_element.attributeNode("id").value() == v_inf->group_id){

/*组ID已存在*/

child_element.attributeNode("version").setValue(v_inf->version);

child_element.attributeNode("path").setValue(v_inf->file_path);

break;

}

}//end for

if(j == group_child_list.count()){ //新建组、新建版本信息

qDebug() << "add a new group";

QDomElementnew_element = child_node.toDocument().createElement("group");

new_element.setAttribute("id", v_inf->group_id);

new_element.setAttribute("version", v_inf->version);

new_element.setAttribute("path", v_inf->file_path);

//child_node.toDocument().appendChild(new_element);

child_node.appendChild(new_element);

}

}//end if

/*保存更新后的XML文件*/

file.close();

file.open(QFile::WriteOnly| QFile::Truncate);

file.seek(0);

QTextStream out(&file);

out.reset();

out.setCodec("utf-8");

document.save(out, 4, QDomNode::EncodingFromTextStream);

file.close();

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值