Qt XML序列化添加了额外的字符
Qt XML serialization adds extra characters
我有一个使用 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 文档:
传递给
open()
的QIODevice::Text
标志告诉Qt转换 Windows 样式的行终止符 ("rn
") 转换为 C++ 样式的终止符 ("n
")。默认情况下,QFile 假定为二进制,即它不执行 对文件中存储的字节进行的任何转换。
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- Cppcheck生成xml转储文件
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 如何使用QT类和功能构建XML文件,并逃脱所有非单数字符
- XML从UnicodeString创建CData节点时出现无效字符
- Qt XML序列化添加了额外的字符
- 使用Xerces C++过滤连续XML标记之间的格式化字符
- 在C++中将特殊ASCII字符转换为XML兼容字符串
- 忽略xml元素中的字符
- Qt C++XML意外字符