「Qtの基礎 - XML」の版間の差分
提供: MochiuWiki : SUSE, EC, PCB
ページの作成:「== 概要 == <br><br> == XMLの解析 == <br><br> __FORCETOC__ カテゴリ:Qt」 |
|||
| 2行目: | 2行目: | ||
<br><br> | <br><br> | ||
== | == 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;
}