QXmlStreamReader 读取 XML 文件卡死

简介: 如何设置使 QXmlStreamReader 能够读取 XML 文件中特殊符号

原因分析

背景
使用的 Qt 开发环境为 5.12.9 ,使用 QXmlStreamReader 读取 xml 配置文件中的代码错误及修改方案,并显示。

某次新增 xml 配置后,点击运行一直不显示窗口。查找发现 XML 文件中存在标红的字符 &&。

部分 xml 如下:

<Issue>
    <Title>...</Title>
    <Description>逻辑 '&&' 两边存在逻辑相反的表达式。<Description>
    <Code Language="Cpp">if (a && !a)</Code>
    <Solution>...</Solution>
</Issue>

xml 中常规内容无法设置为特殊字符 '&',xml 解析器会解析失败。

解决方案

1 - 使用 <![CDATA[ ]]> 标签

xml 解析器不会解析此标签中的文本信息,可以包含特殊字符。

2 - 使用转义字符 &amp;

此转义字符可以被 QXmlStreamReader 最终识别为 & 不影响正常显示。

因此,使用两种解决方法的最终结果为:

<Issue>
    <Title>...</Title>
    <Description>逻辑 '&amp;&amp;' 两边存在逻辑相反的表达式。<Description>
    <Code Language="Cpp"><![CDATA[if (a && !a)]]></Code>
    <Solution>...</Solution>
</Issue>

其他特殊字符

转义字符 字符 速记 名称
< &lt; less than 小于号
> &gt; greater than 大于号
& &amp; ampersand 与符号
' &apos; apostrophe 单引号
" &quot; quote 双引号

查到网上有很多说需要额外处理 '" 字符,但使用 Qt 5.12.9 未遇到问题。

参考链接:
https://www.jianshu.com/p/b5c76a2c1d3d

目录
相关文章
|
4天前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
2月前
|
XML Java 数据格式
java创建xml文件内容
java创建xml文件内容
25 0
|
2月前
|
XML Java 数据格式
java解析xml文件内容
java解析xml文件内容
34 0
|
3月前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
68 1
|
6天前
|
XML 监控 数据格式
ROS 2 - Python、XML 和 YAML 编写 Launch 文件
ROS 2 - Python、XML 和 YAML 编写 Launch 文件
16 0
|
2月前
|
XML Java 数据库
配置applicationContext.xml文件
配置applicationContext.xml文件
|
1月前
|
XML Java 数据库
配置applicationContext.xml文件
配置applicationContext.xml文件
|
2月前
|
XML JavaScript Java
解析XML文件的几种方法
解析XML文件的几种方法
|
2月前
|
XML 数据格式
XML配置Servlet文件,不使用注解配置路径的方法
XML配置Servlet文件,不使用注解配置路径的方法
|
2月前
|
SQL XML 数据库
后端数据库开发高级之通过在xml文件中映射实现动态SQL
后端数据库开发高级之通过在xml文件中映射实现动态SQL
30 3