QT5.2 QDomDocument操作xml

简介: QT5.2 QDomDocument操作xml
#include <QCoreApplication>
#include <QtXml>
#include <QFile>
#include <qDebug>
void writeXml();
void readxml();
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug()<<"write xml to file ... ...";
    writeXml();
    readxml();
    return a.exec();
}
void writeXml()
{
    QFile file("/xmltest/test.xml");
    if(!file.exists())
        qDebug()<<"file not exists";
    if( !file.open(QFile::WriteOnly|QFile::Truncate))
        qDebug()<<"open fail!!"<<endl;
    //写xml
    QDomDocument doc;
    QDomProcessingInstruction instruction = doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");
    doc.appendChild(instruction);
    QDomElement root = doc.createElement("library");
    doc.appendChild(root);
    QDomElement book = doc.createElement("book");//创建属性
    book.setAttribute("id", 1);
    QDomAttr time = doc.createAttribute("time");
    time.setValue("2019/02/11");
    book.setAttributeNode(time);
    QDomElement title = doc.createElement("title");
    QDomText text;
    text = doc.createTextNode("Qt");
    book.appendChild(title);
    title.appendChild(text);
    QDomElement author=doc.createElement("author");
    text=doc.createTextNode("muchuxni");
    author.appendChild(text);
    book.appendChild(author);
    root.appendChild(book);
    QTextStream outstream(&file);
    doc.save(outstream,4);
    outstream.flush();
    file.close();
    qDebug()<<"closed";
}
void readxml()
{
    QFile file("/xmltest/test.xml");
    if(!file.open(QFile::ReadOnly))
        qDebug()<<"open fail";
    QDomDocument doc;
    if(!doc.setContent(&file))
    {
        file.close();
        return;
    }
    file.close();
    QDomElement root = doc.documentElement();
    qDebug()<<root.nodeName()<<root.nodeType();
    QDomNode node=root.firstChild();//获取跌一个子节点
    while(!node.isNull())
    {
        if(node.isElement())
        {
            QDomElement e=node.toElement();
            qDebug()<<e.tagName();
            QDomNodeList list=e.childNodes();
            for(int i=0; i<list.count(); i++)
            {
                QDomNode n=list.at(i);
                if(node.isElement())
                    qDebug()<<n.nodeName()<<":"<<n.toElement().text();
            }
        }
        node=node.nextSibling();
    }
}

微信图片_20230116215838.png

目录
相关文章
|
7月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
|
7月前
|
XML Java 开发工具
jdom操作xml实战
jdom操作xml实战
|
6月前
|
XML Java 数据格式
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
47 1
|
XML 数据格式
|
XML Java 数据库连接
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-原始jdbc操作1
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-原始jdbc操作1
65 0
|
7月前
|
XML Java 数据库连接
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
【1月更文挑战第2天】 MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
174 2
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
|
7月前
|
XML 存储 JavaScript
深入学习 XML 解析器及 DOM 操作技术
所有主要的浏览器都内置了一个XML解析器,用于访问和操作XML XML 解析器 在访问XML文档之前,必须将其加载到XML DOM对象中 所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XML DOM对象
129 0
|
7月前
|
XML Java 数据库连接
* 完成单表操作:需要3个功能。 * 功能1:使用注解 * 功能2:通用Mapper * 功能3:使用xml
* 完成单表操作:需要3个功能。 * 功能1:使用注解 * 功能2:通用Mapper * 功能3:使用xml
119 0
|
XML 存储 JSON
【100天精通python】Day29:文件与IO操作_XML文件处理
【100天精通python】Day29:文件与IO操作_XML文件处理
102 0
|
XML 数据格式
XML的简单操作
接着上篇博客《XML简介与创建》,这篇博客将介绍对xml文档的简单操作: