2012-03-08 20 views
2

QDomDocumentを使用してQtのXMLファイルを解析しています。次のようにそうするコードは次のとおりです。QDomDocument:要素の解析中にエラーが発生しました

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

このエラーの原因となっている間違いがわかりません。どんな助けもありがとう。

答えて

2

ファイル名を受け入れる方法はありません。QDomDocument::setContent IMHOあなたは以下の方法を誤解しています:http://qt-project.org/doc/qt-4.8/qdomdocument.html#setContent-5。あなたのコードは、ファイル名の文字列を解析しようとします。

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; 
} 
+0

すごい:

ではなくqfileによりオブジェクトを使用します。愚かな間違い。それを指摘してくれてありがとう。 – finiteloop

関連する問題