QT 实现 读取 增加 删除 实时操作xml
include "operatexml.h"includeOperateXml::OperateXml(QWidget *parent) OperateXml::~OperateXml() } } void OperateXml::load() m_model = new QStandardItemModel(); m_model->setColumnCount(3); m_model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("名称")); m_model->setHeaderData(1,QString::fromLocal8Bit("经度")); m_model->setHeaderData(2,QString::fromLocal8Bit("纬度")); if (!m_cityList.empty()) { for (int i = 0; i < m_cityList.size(); i++) { m_model->setItem(i,new QStandardItem(m_cityList[i].name)); m_model->setItem(i,1,new QStandardItem(QString::number(m_cityList[i].lon))); m_model->setItem(i,2,new QStandardItem(QString::number(m_cityList[i].lat))); } } ui.tableView->setModel(m_model); ui.tableView->setSelectionBehavior(QAbstractItemView::SelectRows); } QDomDocument doc; if (!doc.setContent(&file)) { file.close(); return; } file.close(); QDomElement root = doc.documentElement(); //返回根节点 QDomNode node = root.firstChild(); //获得第一个子节点 while (!node.isNull()) //如果节点不空 { if (node.isElement()) //如果节点是元素 { cityInfo city; QDomElement e = node.toElement(); //转换为元素,注意元素和节点是两个数据结构,其实差不多 if (e.tagName() == "city") { city.name = e.attribute("name"); city.lon = e.attribute("lon").toDouble(); city.lat = e.attribute("lat").toDouble(); m_cityList.push_back(city); } } node = node.nextSibling(); //下一个兄弟节点,nextSiblingElement()是下一个兄弟元素,都差不多 } } QDomDocument doc; //写入xml头部 QDomProcessingInstruction instruction; //添加处理命令 instruction = doc.createProcessingInstruction("xml","version="1.0" encoding="UTF-8""); doc.appendChild(instruction); //添加根节点 QDomElement root = doc.createElement("lib"); doc.appendChild(root); int n = m_model->rowCount(); for (int i = 0; i < m_cityList.size(); i++) { //添加一个子节点及其子元素 QDomElement city = doc.createElement("city"); /*QModelIndex indexName = m_model->index(i,0); QModelIndex indexLon = m_model->index(i,1); QModelIndex indexLat = m_model->index(i,2); QString name = m_model->data(indexName).toString(); QString lon = m_model->data(indexLon).toString(); QString lat = m_model->data(indexLat).toString();*/ city.setAttribute("name",m_cityList[i].name); //方式一:创建属性 其中键值对的值可以是各种类型 city.setAttribute("lon",m_cityList[i].lon); //方式一:创建属性 其中键值对的值可以是各种类型 city.setAttribute("lat",m_cityList[i].lat); //方式一:创建属性 其中键值对的值可以是各种类型 root.appendChild(city); } //输出到文件 QTextStream out_stream(&file); doc.save(out_stream,4); //缩进4格 file.close(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |