我有这个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:
这是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配置它。
我在网上搜索,发现这是一个内存问题(删除一个删除的变量或类似的东西),但我找不到合适的解决方案。
答案 0 :(得分:0)
我发现了这种行为的问题。这是因为Qt VS Addin的版本仅支持Qt5或更高版本。由于我的项目是与Qt 4.8链接,它会产生一些这样的错误。将我的Qt版本升级到5.5后,此问题就消失了。