欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

qt中修改xml文件中的节点值解决方案

更新时间: 2014-01-05 02:43:45 责任编辑: Author_N1

 

Qt中修改XML文件中的节点值
不能修改XML文件的节点
xml文件:
<kdevelop>
      <general>
          <author>zeki</author>
          <email>caizhiming@tom.com</email>
      </general>
</kdevelop>

我写的源码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtXml>
#include <QDebug>
#include <QFile>
#include <QTextStream>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QDomDocument dom;
    QFile *file=new QFile("/home/qust/qt/XML/2.xml");
    if(file->open(QIODevice::ReadOnly|QIODevice::WriteOnly))
    {
        dom.setContent(file);

    }

    QDomNodeList email=dom.documentElement().elementsByTagName("email");
    qDebug()<<email.count();//打印 1
    qDebug()<<email.item(0).toElement().text();//打印caizhiming@tom.com
    QDomNode oldnode =email.item(0);

    QDomText newnode=dom.createTextNode("99629968@qq.com");
    email.at(0).replaceChild(newnode,oldnode);
    QTextStream out(file);
    dom.save(out,4);
    file->close();

}

MainWindow::~MainWindow()
{
    delete ui;
}
不能修改XML文件,运行后打开xml文件出现

XML解析错误:废弃 document 元素之后的内容 
位置:file:///home/qust/qt/XML/2.xml 
行:8,列:1:<?xml version='1.0'?>

^

该怎么修改xml 中节点的值呢??为什么不能使用setNodeValue()方法来修改接点的值???

大家帮帮忙,谢谢!!!

--参考方法--
中间是TextNode。你修改它的值。
--参考方法--
一般是操作节点的问题.
--参考方法--
dom.setContent(file);
这一行就出错了吧,你的2.xml是不是有问题?

--参考方法--
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QDialog>
#include <QFile>
#include <QDebug>
#include <QDomDocument>
#include <QFile>
QDomDocument m_doc;
bool  changeSave();
bool openXmlFile(QString FilePath);

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    changeSave();
    return a.exec();
}
bool 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  changeSave()
{
    
    if(!openXmlFile("I:/q.xml"))
    {
        return false;
    }
    //修改保存xml
    QDomElement root = m_doc.documentElement();
    if(root.tagName()!= "kdevelop")
        return false;
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:43:45
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13608/
本文WWW.DOC100.NET DOC100.NET版权所有。