Генерация XML в QT, как JAXB

Я сгенерировал класс C ++ с CodeSynthesis из файла XSD. Теперь я хочу создать объект C ++, заполнить его данными и сериализовать в формат XML или JSON. Как я могу сгенерировать XML? Я также использую фреймворк Qt. Это должно выглядеть как JAXB. Например (JavaCode):

Worker w = new Worker();
w.setName("Peter");
w.setStreet("...");
String xml = "XMLGenerator".generate(w);`

Это возможно?

1

Решение

Да, это возможно.

В документации для CodeSynthesis XSD где объект C ++ создается и затем сериализуется в XML.

Подробнее об этом читайте в:

C ++ / Tree Mapping Руководство по началу работы (Раздел 2.5 Добавление сериализации)

1

Другие решения

Вы можете создавать XML-файлы в Qt, используя классы DOM. DOM работает, представляя весь XML-документ в виде дерева объектов узлов в памяти.
:

QDomDocument document;

QDomElement d = document.createElement( "document" );
d.setAttribute( "name", "DocName" );

QDomElement a = document.createElement( "author" );
a.setAttribute( "name", "AuthorName" );

QDomText text = document.createTextNode( "Some text" );

document.appendChild( d );
d.appendChild( a );
d.appendChild( text );

//Writing to a file

QFile file( "simple.xml" );
if( !file.open( QIODevice::WriteOnly | QIODevice::Text ) )
{
qDebug( "Failed to open file for writing." );
return -1;
}
QTextStream stream( &file );
stream << document.toString();
file.close();
0

По вопросам рекламы [email protected]