在QString中获取QDomElement值时出错

时间:2015-12-08 17:44:51

标签: c++ visual-studio qt memory

我有这个C ++代码,我尝试通过QDomDocument api从XML文件中获取值:

jsdom.env({
    html: '<html><body></body></html>',
    scripts: ['https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.js'],
    done: function adminAuth(err, window) {
      var $ = window.jQuery;
      $.ajax({
        crossDomain: true,
        url: client.globals.api + 'auth/admins',
        method: 'POST',
        processData: false,
        data: '{"email": "' + client.globals.credentials.username + '", "password": "' + client.globals.credentials.password + '"}',
        beforeSend: function(request) {
          request.setRequestHeader('accept', 'application/json');
          request.setRequestHeader('content-type', 'application/json');
          request.setRequestHeader('authorization', 'Basic NotForYourEyes');
          request.setRequestHeader('cache-control', 'no-cache');
        },
        success: function(response) {
          captureStoreId(response, $);
        },
        error: function(jqXHR, textStatus, err) {
          console.log('Authentication failed with status %s and error %s', textStatus, err);
        }
      });
    }
  });

测试值value1它被定义并包含我想要的值(我将其转换为std :: string并读取它)

Error Detected when getting value1

当程序在描述的行停止时,这是调用Stack:

Call Stack on the error

这是natvis输出:

        ...
        QFile xml_file("file.xml");
        QDomDocument qdom_document;
        maps_qdom_document.setContent(&maps_xml_file);
        QDomNodeList maps = qdom_document.elementsByTagName("map");
        QDomNode n = maps.item(0);
        QDomElement markers_list = n.firstChildElement("markers_list");
        QDomNodeList markers = markers_list.elementsByTagName("marker");
        QDomNode marker;
        int  _id;
        QString value1;
        for (int i = 0; i < markers.size(); i++) {
            marker = markers.item(i);

            // APPLICATION STOPS AT THE LINE BELOW
            value1 = marker.firstChildElement("id").text(); //!!!ERROR DETECTED HERE
            _id = value1.toInt();
        }
        ...

我使用Visual Studio 2015和编译器vsc10(visual studio 2010)。我使用最适合Qt 5的QT VS Addin,但我用Qt4.8 librairies配置它。

我在网上搜索,发现这是一个内存问题(删除一个删除的变量或类似的东西),但我找不到合适的解决方案。

1 个答案:

答案 0 :(得分:0)

我发现了这种行为的问题。这是因为Qt VS Addin的版本仅支持Qt5或更高版本。由于我的项目是与Qt 4.8链接,它会产生一些这样的错误。将我的Qt版本升级到5.5后,此问题就消失了。