news 2026/7/14 10:34:07

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/6/29 15:31:54

Qwen3-235B大模型:一键切换双模式的AI推理神器

Qwen3-235B-A22B-MLX-4bit大模型正式发布&#xff0c;凭借独特的双模式切换能力和2350亿参数规模&#xff0c;重新定义了AI推理的灵活性与效率标准&#xff0c;为复杂任务处理与日常对话需求提供了一体化解决方案。 【免费下载链接】Qwen3-235B-A22B-MLX-4bit 项目地址: htt…

作者头像 李华
网站建设 2026/7/4 20:10:02

终极音效增强指南:Equalizer APO实现专业级音频优化

终极音效增强指南&#xff1a;Equalizer APO实现专业级音频优化 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo 你是否曾为音频效果平淡无奇而苦恼&#xff1f;明明购买了不错的音响设备&#xff0c;却…

作者头像 李华
网站建设 2026/7/13 17:33:30

如何高效实现多平台直播录制:DouyinLiveRecorder核心技术解析

在当今直播行业蓬勃发展的时代&#xff0c;多平台直播录制技术已成为内容创作者和直播爱好者不可或缺的工具。DouyinLiveRecorder作为一款功能强大的开源直播录制软件&#xff0c;通过其独特的直播流录制机制&#xff0c;成功实现了对抖音、TikTok、快手、虎牙、SOOP等50多个直…

作者头像 李华
网站建设 2026/7/13 8:42:11

PyTorch-CUDA-v2.6镜像是否支持TorchServe模型服务化

PyTorch-CUDA-v2.6 镜像能否支撑 TorchServe 模型服务化&#xff1f; 在当前 AI 工程落地加速的背景下&#xff0c;一个常见的现实问题是&#xff1a;我们训练好的 PyTorch 模型&#xff0c;如何高效、稳定地部署到生产环境&#xff1f;尤其当团队已经基于 pytorch-cuda:v2.6 构…

作者头像 李华
网站建设 2026/7/13 22:43:39

VINCIE-3B:从视频中解锁AI图像编辑新能力

VINCIE-3B&#xff1a;从视频中解锁AI图像编辑新能力 【免费下载链接】VINCIE-3B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/VINCIE-3B 导语&#xff1a;字节跳动Seed团队最新发布的VINCIE-3B模型&#xff0c;通过从视频数据中学习上下文图像编辑能…

作者头像 李华
网站建设 2026/7/13 19:55:58

EPubBuilder:浏览器中的专业电子书制作工坊

EPubBuilder&#xff1a;浏览器中的专业电子书制作工坊 【免费下载链接】EPubBuilder 一款在线的epub格式书籍编辑器 项目地址: https://gitcode.com/gh_mirrors/ep/EPubBuilder 还在为制作专业电子书而苦恼吗&#xff1f;传统电子书制作工具复杂难用&#xff0c;格式转…

作者头像 李华