Qt下Dom方式修改xml节点的方法 (简化版)
来源:互联网 发布:网络投资微信群 编辑:程序博客网 时间:2024/06/08 14:29
mainwindow.h文件:
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QDomNode>#include <QMainWindow>namespace Ui { class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); bool openXmlFile(QString FilePath); bool changeSave();private: Ui::MainWindow *ui; QDomDocument m_doc;};#endif // MAINWINDOW_H
mainwindow.cpp文件:
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QFile>#include <QDebug>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); changeSave();}MainWindow::~MainWindow(){ delete ui;}bool MainWindow::openXmlFile(QString FilePath){ QFile file( FilePath ); if( !file.open( QFile::ReadOnly | QFile::Text ) ) { qDebug() << QObject::tr("error::ParserXML->OpenXmlFile->file.open->%s\n") << FilePath; return false; } if( !m_doc.setContent( &file ) ) { qDebug() << QObject::tr("error::ParserXML->OpenXmlFile->doc.setContent\n") << FilePath; file.close(); return false; } file.close(); return true;}bool MainWindow::changeSave(){ if(!openXmlFile("/root/a.xml")) { return false; } //修改保存xml QDomElement root = m_doc.documentElement(); if(root.tagName()!= "kdevelop") return false; QDomNode n = root.firstChild(); while ( !n.isNull() ) { QDomElement e = n.toElement(); if( !e.isNull()) { if( e.nodeName() == "general" ) { QDomNodeList list = e.childNodes(); //获得元素e的所有子节点的列表 for(int a=0; a<list.count(); a++) //遍历该列表 { QDomNode node = list.at(a); if(node.isElement()) { if( node.nodeName() == "author" ) { // QDomNode oldnode = node.firstChild(); //标签之间的内容作为节点的子节点出现,得到原来的子节点 node.firstChild().setNodeValue("love"); //用提供的value值来设置子节点的内容 qDebug()<<"after change,the value is"<<node.toElement().text(); // QDomNode newnode = node.firstChild(); //值修改过后 // node.replaceChild(newnode,oldnode); //调用节点的replaceChild方法实现修改功能 } if( node.nodeName() == "email" ) { // QDomNode oldnode = node.firstChild(); node.firstChild().setNodeValue("sex"); // QDomNode newnode = node.firstChild(); // node.replaceChild(newnode,oldnode); } } } } } n = n.nextSibling(); } QFile filexml("/root/a.xml"); if( !filexml.open( QFile::WriteOnly | QFile::Truncate) ){ qWarning("error::ParserXML->writeOperateXml->file.open\n"); return false; } QTextStream ts(&filexml);// ts.reset();// ts.setCodec("utf-8");// m_doc.save(ts, 4, QDomNode::EncodingFromTextStream); m_doc.save(ts,4); filexml.close(); return true;}
xml文件,修改前:
<?xml version='1.0' encoding='UTF-8'?><kdevelop> <general> <author>asdf</author> <email>zxcv</email> </general></kdevelop>
xml文件,修改后:
<?xml version='1.0' encoding='UTF-8'?><kdevelop> <general> <author>love</author> <email>sex</email> </general></kdevelop>
- Qt下Dom方式修改xml节点的方法 (简化版)
- Qt下Dom方式修改xml节点的方法
- Qt下Dom方式修改xml文件的结点值
- Qt通过dom方式修改xml
- Qt通过dom方式修改xml
- QT Dom修改xml
- QT DOM的方式读写Xml文件
- QT XML文件 修改节点
- Qt之Dom添加和修改节点
- DOM 查找节点,修改节点的值
- QT开发(四十二)——DOM方式解析XML
- java修改xml节点方法
- QT DOM方式写入xml文件
- QT DOM方式读取xml文件(QDomElement)
- qt读写XML资料[DOM方式]
- QT DOM方式写入xml文件
- QT DOM方式读取xml文件(QDomElement)
- Qt:用Dom方式读写xml文件
- WDK
- C语言图形函数编程
- poj 3009 Curling 2.0
- txt文件写成dat文件实例
- Why SAP HANA is a Better Choice than Oracle Exalytics
- Qt下Dom方式修改xml节点的方法 (简化版)
- [Script]Call Inventory Transaction Manager
- C语言图形编程
- Android布局实现圆角边框
- code_work_posOrder_1.2
- (转).net中导入excel文件显示进度条
- ADF Input File组件使用不正常
- C语言模仿幻灯片过渡效果之水平百叶窗
- HDU_1540 Tunnel Warfare 线段树