「Qtの基礎 - XML」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

ページの作成:「== 概要 == <br><br> == XMLの解析 == <br><br> __FORCETOC__ カテゴリ:Qt
 
2行目: 2行目:
<br><br>
<br><br>


== XMLの解析 ==
== QXmlStreamReaderクラスの使用 ==
 
以下の例では、XMLファイルを読み込み、要素titleの値を抽出してコンソールへ出力している。<br>
<syntaxhighlight lang="c++">
#include <QXmlStreamReader>
#include <QFile>
#include <QTextStream>
// XMLファイルを開く
QFile File("<XMLファイルのパス  例: hoge.xml>");
if(!File.open(QIODevice::ReadOnly)) {
    std::cout << QString("ファイルのオープンに失敗 : %1").arg(File.errorString()) << std::endl;
    return;
}
// XMLファイルを読み込む
QTextStream InStream(&File);
QString XMLData = InStream.readAll();
File.close();
// XMLファイルから特定の要素を抽出
QXmlStreamReader xml(XMLData);
while (!xml.atEnd() && !xml.hasError()) {
    QXmlStreamReader::TokenType token = xml.readNext();
    if (token == QXmlStreamReader::StartElement) {
      if (xml.name() == "title") {
          // 特定の要素が存在する場合は値をコンソールへ出力
          xml.readNext();
          std::cout << QString("Title : %1").arg(xml.text().toString()).toStdString() << std::endl;
      }
    }
}
if (xml.hasError()) {
    std::cerr << QString("XML Error : %1").arg(xml.errorString()).toStdString() << std::endl;
}
</syntaxhighlight>
<br><br>
<br><br>



2024年3月22日 (金) 16:12時点における版

概要



QXmlStreamReaderクラスの使用

以下の例では、XMLファイルを読み込み、要素titleの値を抽出してコンソールへ出力している。

 #include <QXmlStreamReader>
 #include <QFile>
 #include <QTextStream>
 
 // XMLファイルを開く
 QFile File("<XMLファイルのパス  例: hoge.xml>");
 if(!File.open(QIODevice::ReadOnly)) {
    std::cout << QString("ファイルのオープンに失敗 : %1").arg(File.errorString()) << std::endl;
    return;
 }
 
 // XMLファイルを読み込む
 QTextStream InStream(&File);
 QString XMLData = InStream.readAll();
 File.close();
 
 // XMLファイルから特定の要素を抽出
 QXmlStreamReader xml(XMLData);
 while (!xml.atEnd() && !xml.hasError()) {
    QXmlStreamReader::TokenType token = xml.readNext();
    if (token == QXmlStreamReader::StartElement) {
       if (xml.name() == "title") {
          // 特定の要素が存在する場合は値をコンソールへ出力
          xml.readNext();
          std::cout << QString("Title : %1").arg(xml.text().toString()).toStdString() << std::endl;
       }
    }
 }
 
 if (xml.hasError()) {
    std::cerr << QString("XML Error : %1").arg(xml.errorString()).toStdString() << std::endl;
 }