MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Qtの基礎 - XMLのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Qtの基礎 - XML
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == QXmlStreamReaderクラス == ==== QXmlStreamReaderクラスとは ==== QXmlStreamReaderクラスは、XMLをシンプルなストリーミングAPIで読み込むための高速パーサである。<br> <br> ストリームリーダの基本的なコンセプトは、XMLドキュメントをトークンのストリームとして読み込むことである。<br> QXmlStreamReaderクラスとSAXの主な違いは、これらのXMLトークンの読み込み手順である。<br> <br> * SAXの場合 *: アプリケーションはパーサの都合に合わせてパーサからXMLイベントを受信するハンドラ (コールバック関数) を提供する必要がある。 * QXmlStreamReaderの場合 *: 繰り返し文を使用して、必要なトークンを次々にリーダから取り出すことができる。 *: これは、<code>readNext</code>メソッドを呼び出すことで実行され、リーダは次のトークンを完了するまで入力ストリームから読み取り、<code>tokenType</code>メソッドを返す。 *: その後、<code>isStartElement</code>メソッドや<code>text</code>メソッド等を使用してトークンを確認することにより、読み込まれているタグや要素についての情報を得ることができる。 <br> このプルアプローチのメリットは、再帰降順パーサを構築して、XMLを異なるメソッドやクラスに分割できることである。<br> これにより、XMLの解析を簡単に追跡することができる。<br> <br> ==== サンプルコード ==== 以下の例では、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> == Xerces-C++ライブラリ == ==== Xerces-C++ライブラリとは ==== Apache XMLプロジェクトにより開発されたXMLパーサライブラリである。<br> C++で実装されており、XMLドキュメントの解析、生成、変更が可能であり、W3C標準に準拠しており、高度な機能を持つ。<br> <br> Xerces-C++ライブラリは、以下に示す特徴を持つ。<br> * W3C標準準拠 *: XML 1.0 / 1.1、DOM Level 1 / 2 / 3、SAX 1 / 2、XInclude、XML Schema、XPath、XSLT、名前空間等のXMLに関連する多くのW3C標準に準拠している。 * 高機能 *: 豊富な機能セットを持っており、XMLドキュメントの解析、検証、変更、生成等が可能である。 *: また、XPathやXSLT等の高度な機能もサポートしている。 * 安定性と信頼性 *: Apache XMLプロジェクトにより長年開発され続けており、安定性と信頼性が高い。 *: エンタープライズアプリケーションでの使用実績がある。 * 拡張性 *: プラグイン機構により、独自の機能を簡単に拡張できる。 *: 例えば、独自のXMLスキーマや文字エンコーディングを追加することが可能である。 * マルチスレッド対応 *: マルチスレッドプログラミングをサポートしている。 <br> ただし、Xerces-C++ライブラリは大規模なライブラリであるため、導入や習得にコストがかかる可能性がある。<br> また、パフォーマンス面では軽量なライブラリよりも劣ることがある。<br> <br> そのため、プロジェクトの要件次第では、TinyXMLやRapidXml等の軽量ライブラリも選択肢として検討する必要がある。<br> <br> 一般的には、Xerces-C++ライブラリは高機能で標準準拠のXMLパーサーライブラリであり、本格的なXMLハンドリングが必要な場合に使用する。<br> <br> ==== インストール ==== ===== パッケージ管理システムからインストール ===== # RHEL sudo dnf install # SUSE sudo zypper install <br> ===== ソースコードからインストール ===== Xerces-C++ライブラリのビルドに必要なライブラリをインストールする。<br> # RHEL sudo dnf install make cmake gcc gcc-c++ libcurl-devel libicu-devel # SUSE sudo zypper install make cmake gcc gcc-c++ libcurl-devel libicu-devel <br> [https://xerces.apache.org/xerces-c/download.cgi Xerces-C++ライブラリの公式Webサイト]にアクセスして、ソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf xerces-c-<バージョン>.tar.xz cd xerces-c-<バージョン> <br> Xerces-C++ライブラリをビルドおよびインストールする。<br> mkdir build && cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=<Xerces-C++ライブラリのインストールディレクトリ> \ -DCMAKE_BUILD_TYPE=Release \ -Dmessage-loader=icu \ # オプション : 内部UTF-16と他のエンコーディングとの変換に使用するトランスコーダを指定する # 他に、inmemoryまたはiconv等も指定することができる -Dmessage-loader=icu # オプション : 診断メッセージへのアクセスに使用するメッセージローダを指定する # 他に、gnuiconvまたはiconvを指定することもできる -Dnetwork-accessor=curl # オプション : ネットワークリソースへのアクセスに使用するライブラリを指定する # 他に、"socket"を指定することもできる make -j $(nproc) make install <br><br> __FORCETOC__ [[カテゴリ:Qt]]
Qtの基礎 - XML
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse