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

BEGIN

return 1;

END

</Sql>
(我知道这看起来很糟糕,但

之后有NEWLINEs,这个编辑器无法显示它们,因为它们就在那里,这就是为什么行之间似乎有一条空行。)< / p>
这是我在去反序化后得到的结果:
CREATE FUNCTION func(a INT) RETURNS INT
BEGIN
return 1;
END
因此您可以看到换行符加倍...任何线索如何修复它?
由于
答案 0 :(得分:0)
在打开文件时尝试使用QIODevice::Text
标志进行阅读。
来自QFile文档:
传递给
QIODevice::Text
的{{1}}标志告诉Qt要转换 Windows风格的行终结符(“open()
”)成为C ++风格的终结符 ( “\r\n
”)。默认情况下,QFile采用二进制,即它不执行 存储在文件中的字节的任何转换。