xml - QDom文档 : error occurred while parsing element

标签 xml qt

我正在使用 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/

相关文章:

c++ - Qt 命名空间的元类型信息

java - 更改以前的 ListView 中的 ListView 项目

java - Jackson XmlMapper 在将 XML 写入文件时强制使用小写标记名称

java - 读取 XML 节点 Java 时出现 NullPointerException

c++ - 如何通过我的 C++ 代码读取和传递 svn 版本

c++ - 是否可以在 Qt Designer 中使用依赖注入(inject)(对于 .ui 文件)?

c++ - QSocketNotifier 与 nanomsg

java - 处理多个按钮

c# - 在 C# 中对 XPathNodeIterator 的内容进行排序

c++ - 使用 QGraphicsBlurEffect 进行 QImage 变换