qdomdocument setcontent_QT 中QDomDocument:setContent有关问题请问

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 <

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值