一个使用QtXmlPatterns模块读取xml 的例子


一个使用QtXmlPatterns模块读取xml 的例子:

  1. #include <QApplication>   
  2. #include <QFile>   
  3. #include <QBuffer>   
  4. #include <QIODevice>   
  5. #include <QtXmlPatterns>   
  6. #include <QXmlFormatter>   
  7. #include <QLabel>   
  8.   
  9. int main(int argc, char *argv[])  
  10. {  
  11.     QApplication app(argc, argv);  
  12.   
  13.     QFile sourceDocument;  
  14.     sourceDocument.setFileName("cookbook.xml");  
  15.     sourceDocument.open(QIODevice::ReadOnly);  
  16.     QXmlQuery query;      
  17.     query.bindVariable("inputDocument", &sourceDocument);  
  18.     //之所以要将绑定 inputDocument 变量,估计是为了把需要查询的 xml 文件设置为可读模式,然后才能 setQuery 查询。   
  19.     query.setQuery("(: Select all recipes. :)/ndeclare variable $inputDocument external; /ndoc($inputDocument)/cookbook/recipe/<p>{string(title)}</p>/n");  
  20.   
  21.     QByteArray outArray;  
  22.     QBuffer buffer(&outArray);  
  23.     buffer.open(QIODevice::ReadWrite);  
  24.     QXmlFormatter formatter(query, &buffer);  
  25.     query.evaluateTo(&formatter);  
  26.   
  27.     if (query.evaluateTo(&formatter))  
  28.     {  
  29.         buffer.close();  
  30.         QLabel *label = new QLabel(QString::fromUtf8(outArray.constData()));  
  31.         label->show();  
  32.     }  
  33.   
  34.     sourceDocument.close();  
  35.     return app.exec();  
  36. }  

相关内容