Qt Dom方式写xml,以及保存到xml文件中

#include <QString>
#include <QDebug>
#include <stdio.h>
#include <stdlib.h>
#include <QDomDocument>
#include <QtXml>

//XML DOM的方式
int main(int argc, char *argv[])
{
    QByteArray array;

    QDomDocument doc;
    QDomProcessingInstruction instruction;
    QDomText text;

    instruction = doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");

    doc.appendChild(instruction);                       //doc开头加入instruction
    QDomElement root = doc.createElement("root");       //创建root节点
    QDomElement common = doc.createElement("common");   //创建节点common
    QDomElement meters = doc.createElement("meters");   //创建节点meters
    QDomElement meter = doc.createElement("meter");
    QDomElement function = doc.createElement("function");

    meters.setAttribute("total", "0");                  //设置属性名字和值
    meter.setAttribute("id", "0001");
    meter.setAttribute("name", "0001");

    function.setAttribute("id", "01");                //
    function.setAttribute("error", "");

    meters.appendChild(meter);
    common.appendChild(meters);                         //将meters节点添加到common节点中
    doc.appendChild(root);                              //将root节点添加到doc
    root.appendChild(common);                           //将common节点添加到root节点中
    meter.appendChild(function);

    meters.setAttribute("total", "12");
    array = doc.toByteArray();

    printf("%s", array.data());

    //将xml保存到文件中
    QFile file("./why.xml");

    file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text);
    QTextStream out(&file);
    out.setCodec("UTF-8");
    doc.save(out, 4, QDomNode::EncodingFromTextStream);

    file.close();

    return 0;
}

输出的xml内容为:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <common>
        <meters total="12">
            <meter id="0001" name="0001">
                <function error="" id="01"/>
            </meter>
        </meters>
    </common>
</root>

DOM方式,在内存中形成一个树状结构,在内存中可以实时的改变xml中的内容。但是耗内存较大,在xml内容较少时可以考虑使用。

而SAX,

QXmlStreamWriter的方式是顺序的,只能按照顺序去添加xml内容,无法回头在改动xml的内容。
时间: 2024-10-12 19:17:55

Qt Dom方式写xml,以及保存到xml文件中的相关文章

内核模块遍历进程和任务队列保存到proc文件中

实现一个模块用它遍历当前进程的父进程和任务队列,并将遍历的结果输出到一个proc 文件中(遍历可以从 current 当前进程开始,父进程遍历到初始化进程,遍历任务队列可以利用 for_each_process 宏). 下面是我的内核模块的实现部分: /************************************************************ * 使用内核模块从当前进程开始先前遍历,知道找到第一个进程为止 * * 并将遍历的结果保存到proc文件中 * ******

Sql数据保存到Excel文件中

public string ExportExcel( DataSet ds,string saveFileName) { try { if (ds == null) return "数据库为空"; bool fileSaved = false; Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); if (xlApp == null) {

Qt Dom方式写xml(二)

struct PUBLIC_DATA_SEND {     bool ifrealtimedata;     bool ifdatasend;     bool confirmflag;     int sendtimes;     int sendtime;     QList<QString> waitconfirmterminal;     QList<QString> DateTimeList;     char capturetime[20]; }SEND; int pa

php下载图片生成原始路径 并将下载过的图片路径保存到txt文件中

<?php //header("content-Type: text/html; charset=utf-8"); @ini_set('date.timezone', 'Asia/Shanghai'); @set_time_limit(0); @ini_set('memory_limit','100M'); $headurl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]; $headurl

java将已有的字符串保存到txt文件中

python网络爬虫-通过互联网采集 RMQ算法的学习(区间最值问题)NYOJ119士兵杀敌(三) JAVA常用设计模式 Java多线程知识要点 9fw谀泄牡http://p.baidu.com/itopic/main/center?uid=15fe616263346630323931e4ac&qizj夹餐智p7k9e6律犹媒http://p.baidu.com/itopic/main/center?uid=6bfe616263386334303438e5ac&8q90潦卓嚷v5uuq9轮

关于爬取数据保存到json文件,中文是unicode解决方式

流程: 爬取的数据处理为列表,包含字典.里面包含中文, 经过json.dumps,保存到json文件中, 发现里面的中文显示未\ue768这样子 查阅资料发现,json.dumps 有一个参数.ensure_ascii =true,  它会将不是ascii字符的转义为json 字符串. 如果是false ,不是ascii字符的会包含在里面,即如果是中文就会保存中文. 但是我认为json这样写是有道理的. 用requests模块, requests.post(url,json=handled_da

转:ffmpeg学习(二) 通过rtsp获取H264裸流并保存到mp4文件

本篇将使用上节http://www.cnblogs.com/wenjingu/p/3977015.html中编译好的库文件通过rtsp获取网络上的h464裸流并保存到mp4文件中. 1.VS2010建立VC++  win32控制台项目 2.在工程目录下建立lib目录和include目录,将已编译好的lib拷打lib下,include拷到include下,dll拷到Debug目录下 3.工程属性--配置属性--VC++目录--包含目录,添加ffmpeg头文件目录及其他第三方头文件目录 链接器--常

np.savetxt()——将array保存到txt文件,并保持原格式

问题:1.如何将array保存到txt文件中?2.如何将存到txt文件中的数据读出为ndarray类型? 需求:科学计算中,往往需要将运算结果(array类型)保存到本地,以便进行后续的数据分析. 解决:直接用numpy中的方法. 1:numpy.savetxt(fname,X):第一个参数为文件名,第二个参数为需要存的数组(一维或者二维). 2.numpy.loadtxt(fname):将数据读出为array类型. 示例 >>> import numpy as np >>&

VB.NET 将JSON格式的字符串保存到XML文件中

1.关于本文 这几天打算写一个工具类JsonXmlHelper,用来进行用XML来保存JSON格式文件的工作.该工具类中要实现2个最主要的函数: 1)将JSON格式的内容写入到地址为address的XML中:WriteJsonToXml 2)把函数1中构造的XML文件恢复成JSON格式文档:RecoverJsonFromXml 函数1的实现将在本文中给出,函数2的实现将在以后发表的博文中给出 2.代码说明 1)添加引用:Newtonsoft.Json.dll 2)导入库 'JSON解析相关函数,