2

我有一个使用 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

所以你可以看到换行符加倍......任何线索如何解决它?

谢谢

4

1 回答 1

0

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

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

于 2013-01-25T13:18:06.150 回答