我有一个使用 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>
(我知道这看起来很糟糕,但是在 

之后有换行符,而这个编辑器无法显示它们,这就是为什么看起来两行之间有一个空行的原因。)
这是反序列化后得到的:
CREATE FUNCTION func(a INT) RETURNS INT
BEGIN
return 1;
END
所以你可以看到换行符加倍了......任何线索如何解决它?
谢谢
最佳答案
打开文件进行阅读时尝试使用QIODevice::Text
标记。
来自 QFile 文档:
The
QIODevice::Text
flag passed toopen()
tells Qt to convert Windows-style line terminators ("\r\n
") into C++-style terminators ("\n
"). By default, QFile assumes binary, i.e. it doesn't perform any conversion on the bytes stored in the file.
关于c++ - Qt XML 序列化添加额外的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11205856/