news 2026/4/18 11:24:18

Qt ----- 各类字符串解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt ----- 各类字符串解析

目录

  • 1,xml字符串解析
    • 1.1 QDomElement 节点解析类
    • 1.2 QDomNode节点遍历类
    • 1.3 QDomNodeList 类
  • 2,创建xml字符串
    • 2.1 QDomDocument类的函数
    • 2.2 QDomElement类的函数

1,xml字符串解析

1.1 QDomElement 节点解析类

QDomElement

概述
QDomElement 继承自 QDomNode,专门用于表示 XML 文档中的元素节点。元素节点是 XML 文档的基本构建块,它们可以包含子元素、文本内容和属性。

常用成员函数

  • tagName():返回元素的标签名,例如在 元素中,返回 “book”。
  • attribute(const QString &name, const QString &defaultValue = QString()):获取指定属性的值。如果属性不存在,返回默认值(默认为空字符串)。例如,对于 ,attribute(“category”) 将返回 “cooking”。
  • setAttribute(const QString &name, const QString &value):设置元素的属性值。
  • elementsByTagName(const QString &tagName):返回所有具有指定标签名的子元素,以QDomNodeList 的形式。例如,在一个包含多个 元素的父元素中,调用
    elementsByTagName(“book”) 会返回所有的 元素。

1.2 QDomNode节点遍历类

QDomNode

概述:
QDomNode 是 DOM 树中所有节点的抽象基类。它代表了 XML 文档中的一个节点,可以是元素节点、文本节点、属性节点、注释节点等各种类型的节点。通过 QDomNode,可以遍历 DOM 树,访问节点的属性和子节点等。

常用成员函数:

  • childNodes():返回该节点的所有子节点,以 QDomNodeList 的形式。
  • firstChild():返回该节点的第一个子节点,如果没有子节点则返回一个空的 QDomNode。
  • lastChild():返回该节点的最后一个子节点,如果没有子节点则返回一个空的 QDomNode。
  • nextSibling():返回该节点的下一个兄弟节点,如果没有下一个兄弟节点则返回一个空的 QDomNode。
  • previousSibling():返回该节点的上一个兄弟节点,如果没有上一个兄弟节点则返回一个空的 QDomNode。
  • isElement():判断该节点是否为元素节点,如果是则返回 true,否则返回 false。
  • toElement():该函数尝试将QDomNode对象转换为QDomElement对象。如果QDomNode实际上代表一个元素节点,toElement()将返回对应的QDomElement对象,以便访问元素特定的属性和方法。如果QDomNode不是元素节点,toElement()将返回一个空的QDomElement对象,其isNull()函数将返回true。

1.3 QDomNodeList 类

QDomNodeList
概述
QDomNodeList 是一个节点列表,它包含了一系列的 QDomNode。这个列表可以是通过 QDomNode 的 childNodes() 或 QDomElement 的 elementsByTagName() 等函数获取的子节点集合。

常用成员函数

  • count():返回列表中节点的数量。
  • at(int index):返回列表中指定索引位置的节点。索引从 0 开始,如果索引超出范围,返回一个空的 QDomNode。
  • operator[](int index):这是 at(int index) 的重载,也用于返回列表中指定索引位置的节点。

2,创建xml字符串

在 Qt 中使用QDomDocument创建 XML 字符串主要涉及以下类和函数:
主要类

  • QDomDocument:代表整个 XML 文档,用于管理文档的结构,包括创建节点、添加节点到文档树以及将文档转换为字符串。
  • QDomElement:表示 XML 文档中的元素节点。通过它可以创建元素、设置元素的属性以及添加子元素。
  • QDomText:用于表示文本节点,即元素内的文本内容。虽然在代码中通常使用
  • QDomDocument::createTextNode函数创建文本节点并添加到元素中,但了解这个类有助于理解 XML 文档结构。
  • QDomProcessingInstruction:用于创建处理指令,例如 XML 声明(<?xml version="1.0" encoding="UTF - 8"?>)就是一个处理指令。

常用函数

2.1 QDomDocument类的函数

  • createProcessingInstruction(const QString &target, const QString& data):创建一个处理指令。target通常为"xml",data包含版本和编码信息等,如"version=“1.0”
    encoding=“UTF - 8"”。
  • createElement(const QString& tagName):创建一个指定标签名的元素节点。例如,createElement(“book”)创建一个元素。
  • createTextNode(const QString& text):创建一个包含指定文本的文本节点。例如,createTextNode(“Some text”)创建一个文本节点。
  • appendChild(const QDomNode& node):将一个节点添加到文档树中,作为当前文档的子节点。可以添加处理指令、根元素等。
  • toString(int indent = 0):将QDomDocument转换为字符串形式的
    XML。indent参数用于指定缩进级别,默认为 0(无缩进)。

2.2 QDomElement类的函数

  • setAttribute(const QString &name, const QString& value):为元素设置属性。例如,element.setAttribute(“category”,
    “fiction”)为element元素设置category属性,值为"fiction"。
  • appendChild(const QDomNode& node):将一个节点添加为当前元素的子节点。可以添加子元素或文本节点等。例如,bookElement.appendChild(titleElement)将titleElement添加为bookElement的子元素。
  • // 创建文本节点
    QDomText textNode = doc.createTextNode(“This is some text within the root element”);
    root.appendChild(textNode);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 12:32:34

UniversalUnityDemosaics:Unity游戏视觉修复专家工具集深度评测

UniversalUnityDemosaics&#xff1a;Unity游戏视觉修复专家工具集深度评测 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnityD…

作者头像 李华
网站建设 2026/4/18 8:49:42

Steam创意工坊下载工具终极指南:跨平台模组轻松获取

还在为Epic Games Store或GOG平台购买的游戏无法使用Steam创意工坊模组而烦恼吗&#xff1f;WorkshopDL这款专业的Steam创意工坊下载工具&#xff0c;让你无需拥有Steam版本游戏也能轻松获取海量模组资源&#xff0c;真正实现跨平台模组自由&#xff01; 【免费下载链接】Works…

作者头像 李华
网站建设 2026/4/18 9:51:09

PCL2社区版终极指南:快速解决Minecraft启动器所有痛点

还在为Minecraft启动器频繁崩溃而烦恼&#xff1f;&#x1f914; 模组冲突导致游戏无法启动&#xff1f;启动时间漫长到让你失去耐心&#xff1f;PCL2社区增强版为你带来全新的智能解决方案&#xff0c;彻底告别传统启动器的各种困扰&#xff01; 【免费下载链接】PCL2-CE PCL2…

作者头像 李华
网站建设 2026/4/18 8:23:41

PyTorch-CUDA-v2.6镜像如何帮助初创公司降低AI投入成本

PyTorch-CUDA-v2.6镜像如何帮助初创公司降低AI投入成本 在人工智能加速落地的今天&#xff0c;一家十人规模的AI初创团队正面临一个典型困境&#xff1a;算法工程师已经设计好图像分类模型&#xff0c;但整整三天过去了&#xff0c;依然没人能跑通训练环境。有人卡在CUDA版本不…

作者头像 李华
网站建设 2026/4/18 8:23:41

高校电工电子实训中Multisim仿真的融入策略:系统学习

高校电工电子实训如何用Multisim打通“理论—仿真—实践”闭环&#xff1f;还在为学生一接线就烧芯片、调电路全靠运气而头疼&#xff1f;实验课时间紧、设备少、损耗大&#xff0c;老师讲得累&#xff0c;学生学得懵——这几乎是每所高校电工电子课程的常态。但有没有一种方式…

作者头像 李华
网站建设 2026/4/18 11:07:40

Sunshine游戏串流终极指南:7步打造完美跨设备游戏体验

Sunshine游戏串流终极指南&#xff1a;7步打造完美跨设备游戏体验 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器&#xff0c;支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshi…

作者头像 李华