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

时间:2012-06-26 10:58:02

标签: c++ xml qt serialization newline

我有一种使用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;之后有NEWLINEs,这个编辑器无法显示它们,因为它们就在那里,这就是为什么行之间似乎有一条空行。)< / p>

这是我在去反序化后得到的结果:

CREATE FUNCTION func(a INT) RETURNS INT


BEGIN


    return 1;


END

因此您可以看到换行符加倍...任何线索如何修复它?

由于

1 个答案:

答案 0 :(得分:0)

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

  

传递给QIODevice::Text的{​​{1}}标志告诉Qt要转换   Windows风格的行终结符(“open()”)成为C ++风格的终结符   ( “\r\n”)。默认情况下,QFile采用二进制,即它不执行   存储在文件中的字节的任何转换。