原因分析
背景
使用的 Qt 开发环境为 5.12.9 ,使用 QXmlStreamReader 读取 xml 配置文件中的代码错误及修改方案,并显示。
某次新增 xml 配置后,点击运行一直不显示窗口。查找发现 XML 文件中存在标红的字符 &&。
部分 xml 如下:
<Issue>
<Title>...</Title>
<Description>逻辑 '&&' 两边存在逻辑相反的表达式。<Description>
<Code Language="Cpp">if (a && !a)</Code>
<Solution>...</Solution>
</Issue>
AI 代码解读
xml 中常规内容无法设置为特殊字符 '&',xml 解析器会解析失败。
解决方案
1 - 使用 <![CDATA[ ]]>
标签
xml 解析器不会解析此标签中的文本信息,可以包含特殊字符。
2 - 使用转义字符 &
此转义字符可以被 QXmlStreamReader 最终识别为 &
不影响正常显示。
因此,使用两种解决方法的最终结果为:
<Issue>
<Title>...</Title>
<Description>逻辑 '&&' 两边存在逻辑相反的表达式。<Description>
<Code Language="Cpp"><![CDATA[if (a && !a)]]></Code>
<Solution>...</Solution>
</Issue>
AI 代码解读
其他特殊字符
转义字符 | 字符 | 速记 | 名称 |
---|---|---|---|
< | < |
less than | 小于号 |
> | > |
greater than | 大于号 |
& | & |
ampersand | 与符号 |
' | ' |
apostrophe | 单引号 |
" | " |
quote | 双引号 |
查到网上有很多说需要额外处理 '
和 "
字符,但使用 Qt 5.12.9 未遇到问题。