我正在使用 QDomDocument 来解析 Qt 中的 XML 文件。执行此操作的代码如下:
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("(*.xml)"));
QDomDocument domDocument;
try {
QString qs;
int y,j;
if (!domDocument.setContent(fileName, false, &qs, &y, &j))
{
cout << "error: " << qs.toStdString() << " " << y << " " << j << endl;
return;
}
} catch (...)
{
//handle error
}
我使用 getOpenFileName 打开的文档包含以下内容:
<list>
<list_name>List1</list_name>
<task>
<task_name>Task1a</task_name>
<task_due_date></task_due_date>
<task_note></task_note>
</task>
<task>
<task_name>Task1b</task_name>
<task_due_date></task_due_date>
<task_note></task_note>
</task>
</list>
对 setContent() 的调用返回 false,导致打印以下消息:
error: error occurred while parsing element 1 1
我无法弄清楚导致此错误发生的原因。任何帮助将不胜感激。
最佳答案
没有接受文件名的QDomDocument::setContent
方法。恕我直言,您误解了以下方法:http://qt-project.org/doc/qt-4.8/qdomdocument.html#setContent-5 。您的代码尝试解析文件名字符串。
改用 QFile 对象:
QFile file(fileName);
if (file.open(QIODevice::ReadOnly)) {
QDomDocument domDocument;
QString errorStr;
int errorLine;
int errorColumn;
if (!domDocument.setContent(&file, false, &errorStr, &errorLine, &errorColumn))
qDebug() << errorStr << errorLine << errorColumn;
}
关于xml - QDom文档 : error occurred while parsing element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9626033/