2012-06-26 2 views
2

У меня есть способ сериализации свободного ввода текста в XML-узел с использованием Qt. Этот текст может содержать символы новой строки. Проблема в том, что когда я сериализую этот текст и снова десериализую его, в выходной поток вставляются несколько дополнительных символов новой строки.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>

(я знаю, это выглядит ужасно, но есть Newlines после &#xd;&#xd; и этот редактор не позволит, чтобы показать им, как они есть, поэтому кажется, что есть . пустая строка между строками)

и это то, что я получаю после desrializing:

CREATE FUNCTION func(a INT) RETURNS INT 


BEGIN 


    return 1; 


END 

, так как вы можете видеть, что новые линии удваиваются ... любая подсказка, как исправить это?

Благодаря

ответ

0

Попробуйте использовать QIODevice::Text флаг, если открыть файл для чтения. Из QFile документации:

QIODevice::Text флага передается open() говорит Qt для преобразования Windows, стиль терминаторов строки ("\r\n ") в C++ - терминаторы стиля (" \n"). По умолчанию QFile принимает двоичный код, то есть он не выполняет любое преобразование в байтах, хранящихся в файле.

Смежные вопросы