【xml】[Qt] 生成xml格式对象或xml字符串(速成 QT处理xml)

2023-05-16

本文为什么称为速成呢,因为本人就是速成的,接手的项目里有个关于xml的bug,对xml一无所知到解决bug,自己硬着头皮上,速成成功了,也就觉得有写点什么东西的必要了,便有了此文,也算是为了以后的自己用的时候看了。

快速入门xml

1.xml是一种有树状结构的标记语言,适合数据传输
大致格式如下

<?xml version="1.0" encoding="utf-8"?>
<book>
  <bookID>9996666</bookID>
  <DATA>
    <page>2011041222150076</page>
  </DATA>
</book>

2.我们大致将其分为3个部分(我乱说的 有时间不用速成的建议看其他文章 别被我误导)

  • 头部 固定这么写就行,表示了这种数据是xml,版本号和字符集
<?xml version="1.0" encoding="utf-8"?>
  • 元素节点 <book> 这样的都是元素 从 <book>到 <\book>都属于元素,我们把book称为元素名吧 方便后面叙述(我定义的 请有空了查询正确的官方定义)
  • 文本节点 9996666 和 2011041222150076这样的节点
    如果你不理解这文本为何是节点,你可以换个格式这么看该xml
<?xml version="1.0" encoding="utf-8"?>
<book>
  <bookID>
    9996666
  </bookID>
  <DATA>
    <page>
      2011041222150076 //将其理解为叶子节点
    </page>
  </DATA>
</book>

3.以上三个部分+树状结构嵌套就组成了我们的xml

另:有个概念叫元素的属性 类似<person sex=“female”>
, 官方文档建议避免使用,所以这里速成也不提了

速成qt对xml的处理

1.首先这玩意在QtXml库里,代码里加个#include <QtXml>先

2.前面说了xml是树状结构,我们称为文档树,那就会有个根来代表整个树用来处理,我们写下如下代码 ,以后domDoc就代表一个xml文档树数据了,我们对该xml的处理都需要这个domDoc。

QDomDocument domDoc;

3.神说,要有头,于是便有了以下代码

	domDoc.appendChild(domDoc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""));

不需要刨根问底,此处添加xml的头部,一个xml只需要一次

4.神看xml是好的,如何给该xml创建元素节点? 我们先创建个最底层的page元素

		QDomElement pageEle = domDoc.createElement("page");

这样我们就有了 <page>到 <\page>

5.但是元素是空的?

	pageEle.appendChild(domDoc.createTextNode("2011041222150076"));

即 元素.appendChild(文档树的根.createTextNode(文本 )) 此时我们生成了一个带文本节点2011041222150076的元素page

6.开始套娃 ,创建其他元素,并给其添加父子元素关联

	QDomElement dataEle = domDoc.createElement("DATA");
	dataEle.appendChild(pageEle);

类似上面这样,等我们添加到domDoc,这颗树就完成了

	domDoc.appendChild(bookEle); //省略了其他元素的创建

7.完成 我们需要用到这棵树,就使用domDoc来调用,或者把他转成字符串来传输或处理

QString xmlStr = domDoc.toString(); //一个string类型的xml字符串
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【xml】[Qt] 生成xml格式对象或xml字符串(速成 QT处理xml) 的相关文章

  • 一、Mysql主从复制(一主多从)搭建

    介绍 在实际生产中 xff0c 数据的重要性不言而喻如果我们的数据库只有一台服务器 xff0c 那么很容易产生单点故障的问题 xff0c 比如这台服务器访问压力过大而没有响应或者奔溃 xff0c 那么服务就不可用了 xff0c 再比如这台服
  • 【M365运维】扩充OneDrive存储空间

    问题 E3 E5等订阅许可下 xff0c 默认的OneDrive存储空间为 1TB xff0c 满了之后该如何扩充 xff1f 解决 1 运行Powershell 2 链接到Sharepoint Online Connect SPOSeri
  • 2023年《计算机工程》最新投稿经验

    1 期刊介绍 xff1a 计算机工程 xff0c 北大核心 CSCD扩展版 xff0c 月刊 xff0c 审稿速度快 xff08 普通外审45天左右 xff0c 加急外审20天左右 xff0c 交审稿费的时候备注即可 xff09 xff0c
  • 201809-3 元素选择器 ccf

    建议将标签和属性分开储存 span class token macro property span class token directive keyword include span span class token string lt
  • 阿里云服务器ecs-user登录名注意事项

    阿里云服务器登录名提供root或ecs user可以选择 xff0c 如果选择root作为登录名 xff0c 一旦云服务器被入侵root权限比较大 xff0c 风险也比较大 xff0c 所以阿里云另外提供了ecs user登录名 xff0c
  • 几种基本汇编指令详解

    几种基本汇编指令详解 常见寄存器 寄存器16位32位64位累加寄存器AXEAXRAX基址寄存器BXEBXRBX计数寄存器CXECXRCX数据寄存器DXEDXRDX堆栈基指针BPEBPRBP变址寄存器SIESIRSI堆栈顶指针SPESPRSP
  • c++ 的string的格式化方法

    1 string strResult str double a 61 35 000 b 61 14 967 std ostringstream ostr ostr lt lt 34 a 43 b 61 34 lt lt a lt lt 34
  • mac硬盘空间不足

    本文参考自 xff1a mac空间不足 自我的进化 http www shanxing top p 61 108 先说结果 xff1a 是由于时间机器 xff08 time machine xff09 的自动备份造成的 在Mac的 关于本机
  • Airsim仿真

    Airsim设计的目的 xff1a 1 现实世界开发测试自动驾驶车辆算法费时费力 2 迎合AI的发展 xff0c 需要在各种条件下和环境下收集大量带注释训练数据 模块化设计 xff0c 强调可扩展性 提供很多API xff0c 核心组件包括
  • Linux 下安装Git

    一 系统 xff1a CentOS release 6 5 Final 查看是否安装过Git xff0c git version 二 下载最新的git xff1a https github com git git 解压缩 xff1a unz
  • 0404---通过SSH连接远程服务器运行图形界面程序问题

    远程运行 linux 服务器图形界面程序问题 通常部署在数据中心机房中的服务器是没有图形桌面的 xff0c 对服务器的日常运维也往往通过远程客户端命令窗口来进行 xff0c 但有时候往往需要在服务器上远程安装或运行图形窗口类软件 xff0c
  • Debian 下 Web Server 和浏览器的利用

    今天有人参观我的计算机 xff0c 呵呵 xff0c 被我的浏览器功能吓住了 xff0c 呵呵 xff0c 这年月 xff0c 浏览 器很管用啊 xff0c 不知道大家怎么用的 xff0c 谈谈我的吧 xff1a 1 wiki mediaw
  • Ubuntu查看linux系统版本号

    查看ubuntu版本 输入命令 cat proc version 显示如下 Linux version 5 0 0 13 generic buildd 64 lcy01 amd64 020 linux内核版本号 gcc version 8
  • Mac识别time machine出错或者打开备份盘里空白

    最近恢复Mac xff0c 从苹果售后拿来的给我预装的是mojova xff0c 10 x xff0c 我备份时候的系统是12 x所以差距比较大 在客服的远程帮助下 xff08 使用我手机远程 xff0c 打开相机就能看到我相机看到的东西
  • Mac终端首行显示特定字符便于查看

    方法一 xff1a 2022年11月3日亲测有效 xff1a 在终端中输入 sudo scutil set HostName x1f412 x1f412 x1f412 x1f412 x1f412 x1f412 就是你想修改的名字 回车之后重
  • VSC 配置c++调试环境

    弄了半天 xff0c 总算弄好了 xff0c 结合网上的教程 xff0c 整理分享一下 总体流程 xff1a 下载安装vscode安装cpptools插件安装编译 调试环境修改vscode调试配置文件 下载安装vscode https co
  • 字符串子序列匹配问题

    题目给你长度为n的字符串L xff0c 给你q个长度为0 m的字符串b xff0c 让你判断每一个b是否是字符串L的子序列 L和b长度小于1e5 xff09 例题 xff1a Long Long Ago 有三种做法 最后一种能过 一 最长公
  • 字符串最小字典序子序列

    给出一个长度为n 1 lt n lt 10000 的只有小写字母的字符串 xff0c 然后找出一个长度为m的最小字典子序列 做一个预处理 xff0c 首先26个vector存储每个字母出现位置的下标 xff0c O n 遍历字符串 xff0
  • 关于vscode中使用c语言链接mysql的问题

    关于vscode中使用c语言链接mysql的问题 最近想着写一个图书管理系统 用来当C语言的期末设计作业 xff0c 想着反正都要写了 就写 大 一点就想着连一下数据库吧 xff01 xff01 就碰到了N多的问题 首先我使用的是vscod
  • debain 、pve虚拟化平台修改国内源并修改dns

    pve 是基于debain的一个linux 虚拟化平台 xff0c 可以实现创建虚拟机 问题 xff1a Failed to fetch xxxxxxx E Failed to fetch http ftp debian org debia

随机推荐