Qt XML序列化添加了额外的字符

Qt XML serialization adds extra characters

本文关键字:字符 XML 序列化 添加 Qt      更新时间:2023-10-16

我有一个使用 Qt 将自由文本输入序列化为 XML 节点的方法。此文本可能包含换行符。问题是,当我序列化此文本并再次反序列化它时,输出流中插入了一些额外的换行符。

这是我的序列化方法:

QDomElement textElement = doc.createElement("Sql");
QDomText cdata = doc.createTextNode(m_sql);
textElement.appendChild(cdata);

这是我要序列化的文本:

CREATE FUNCTION func(a INT) RETURNS INT
BEGIN
     return 1;
END

这是我在序列化文件中得到的:

<Sql>CREATE FUNCTION func(a INT) RETURNS INT&#xd;&#xd;

BEGIN&#xd;&#xd;

   return 1;&#xd;&#xd;

END&#xd;&#xd;</Sql>

(我知道这看起来很可怕,但是&#xd;&#xd;之后有换行符,而该编辑器无法显示它们,这就是为什么行之间似乎有一条空行的原因。

这就是我解脱后得到的:

CREATE FUNCTION func(a INT) RETURNS INT

BEGIN

    return 1;

END

所以正如你所看到的,换行符是加倍的...有什么线索如何解决吗?

谢谢

打开文件进行读取时尝试使用QIODevice::Text标志。从 QFile 文档:

传递给open()QIODevice::Text标志告诉Qt转换 Windows 样式的行终止符 ("rn") 转换为 C++ 样式的终止符 ("n")。默认情况下,QFile 假定为二进制,即它不执行 对文件中存储的字节进行的任何转换。