Вот минимальный код:
QScriptEngine engine;
engine.installTranslatorFunctions();
// Загрузить расширения
QStringList extensions;
extensions << "qt.core" << "qt.xml";
foreach ( const QString & ext, extensions )
{
QScriptValue ret = engine.importExtension( ext );
if ( ret.isError() )
{
// ...........
}
}
QScriptValue docObj = engine.evaluate( "new QDomDocument()" );
engine.globalObject().setProperty( "domdoc", docObj );
QDomDocument* pDoc = qscriptvalue_cast<QDomDocument*>( docObj );
// Теперь документ известен скрипту под именем domdoc
// Заполняем документ ...
// Выполнить сценарий (к этому моменту текст скрипта из файла 'fileName'
// уже лежит в QString 'content')
QScriptValue result = engine.evaluate( content, fileName );
if ( result.isError() )
{
// ...........
}
// Обрабатываем полученное из скрипта
QScriptValue retDocObj = engine.globalObject().property( "domdoc" );
QDomDocument retDom = qscriptvalue_cast<QDomDocument>( retDocObj );
qDebug() << "retDom\n" << retDom.toString(); // !!!!!!!!!!!!!
Имеется проблемка в том, что Qt Script Generator содержит ошибку в части метода appendChild (
https://code.google.com/p/qtscriptgenerator/issues/detail?id=81). После исправления ошибки все работает.