首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

QT 中QDomDocument:setContent有关问题请问

2012-12-30 
QT 中QDomDocument::setContent问题请教QString xmlPathE:\\12.xmlQFile file(xmlPath)if (!file.ope

QT 中QDomDocument::setContent问题请教

QString xmlPath="E:\\12.xml";
QFile file(xmlPath);
if (!file.open(QIODevice::ReadOnly| QIODevice::Text))
{
//return 0;
}

QDomDocument doc;
QString errorStr;
int errorLine, errorCol;

if (!doc.setContent(&file, false, &errorStr, &errorLine, &errorCol))//此句会出错
{
file.close();
}

问题是:程序中如果有doc.setContent(&file, false, &errorStr, &errorLine, &errorCol)这句,那么在doc生命周期结束时就会出错,Windows 已在 bbb.exe 中触发一个断点。其原因可能是堆被损坏,这说明 .exe 中或它所加载的任何 DLL 中有 Bug。请问是为什么?
[解决办法]
加上QApplication app(argc, argv);return app.exec();
你的程序并没有结束,所以doc也没有销毁
[解决办法]
QDomDocument doc("mydocument");
 QFile file("mydocument.xml");
 if (!file.open(QIODevice::ReadOnly))
     return;
 if (!doc.setContent(&file)) {
     file.close();
     return;
 }
 file.close();

 // print out the element names of all elements that are direct children
 // of the outermost element.
 QDomElement docElem = doc.documentElement();

 QDomNode n = docElem.firstChild();
 while(!n.isNull()) {
     QDomElement e = n.toElement(); // try to convert the node to an element.
     if(!e.isNull()) {
         cout << qPrintable(e.tagName()) << endl; // the node really is an element.
     }
     n = n.nextSibling();
 }

 // Here we append a new element to the end of the document
 QDomElement elem = doc.createElement("img");
 elem.setAttribute("src", "myimage.png");
 docElem.appendChild(elem);


这是官方例子,你看看你跟它有啥区别,我其实也不太清楚你的问题,不过我打开文档没有加Text那个flag

热点排行