1. 概要
1.1. はじめに
pugixml は、軽量な C++ 用 XML 処理ライブラリです。豊富な走査・変更機能を備えた DOM 風のインターフェース、XML ファイルやバッファーから DOM ツリーを構築する非常に高速な XML パーサー、そしてデータに基づく複雑なツリー問い合わせのための XPath 1.0 実装 で構成されています。Unicode も完全にサポートしており、2 種類の Unicode インターフェース と、異なる Unicode エンコーディング間の変換を利用できます。この変換は、解析・保存時に自動で行われます。移植性が非常に高く、組み込みも利用も容易なライブラリです。pugixml は 2006 年から開発・保守されており、多くの利用者がいます。すべてのコードが MIT ライセンス で配布されているため、オープンソースのアプリケーションでもプロプライエタリなアプリケーションでも、完全に自由に利用できます。
pugixml を使うと、XML 文書を非常に高速かつ便利に、メモリーを効率よく使って処理できます。ただし、pugixml は DOM パーサーを備えているため、メモリーに収まらない XML 文書は処理できません。また、パーサーは妥当性検証を行わないので、DTD や XML Schema による検証が必要な場合、このライブラリは適していません。
これは pugixml の完全なマニュアルで、ライブラリのすべての機能を詳しく説明しています。できるだけ早くコードを書き始めたい場合は、まずクイックスタートガイドを読むことをお勧めします。
注記
|
完璧な文書はなく、この文書も例外ではありません。誤りや抜けを見つけた場合は、遠慮なく、修正内容を添えて Issue を投稿するかプルリクエストを作成してください。 |
1.2. フィードバック
pugixml のバグを見つけたと思う場合は、Issue 投稿フォームから報告してください。バグには、コンパイル時の問題(エラーや警告)、クラッシュ、性能低下、誤った動作が含まれます。再現できるよう、pugixml のバージョン、コンパイラーのバージョンと対象アーキテクチャー、pugixml を使ってバグを引き起こすコードなど、関係する情報を必ず添えてください。
機能の要望もバグと同じ方法で報告できます。pugixml に足りない機能がある場合や、API に使いにくい箇所があり改善案を提案できる場合は、Issue を投稿してください。ただし、API の変更には、旧バージョンとの互換性や API の重複など、多くの考慮事項があります。そのため、pugixml を変更せず小さな関数で実装できる機能は、一般には採用されません。もっとも、どの規則にも例外はあります。
何らかのビルドシステムや IDE 用のビルドスクリプト、よく設計されたヘルパー関数群、C++ 以外の言語向けのバインディングなど、pugixml への貢献がある場合は、Issue を投稿するかプルリクエストを作成してください。貢献する成果物は、pugixml のライセンスと互換性のあるライセンス条件で配布する必要があります。つまり、GPL/LGPL ライセンスのコードは受け付けられません。
プライバシーなどの事情で Issue を投稿できない場合は、pugixml の作者へ直接メールで連絡できます:[email protected]。
1.3. 謝辞
pugixml は多くの方々の助けなしには開発できませんでした。この節では、そのうちの何人かを紹介します。pugixml の開発に関わったのに、この一覧にお名前がない方には、心よりおわびします。修正できるよう、メールでお知らせください。
pugixml の基礎となった pugxml パーサーを作成した Kristen Wegner に感謝します。
pugxml パーサーへの貢献に対して、Neville Franks に感謝します。
遅延ギャップ縮小方式を提案した Artyom Palvelev に感謝します。
文書の校正とファズテストを行った Vyacheslav Egorov に感謝します。
1.4. ライセンス
pugixml ライブラリは、MIT ライセンスで配布されています。
Copyright (c) 2006-2026 Arseny Kapoulkine
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.これは、オープンソースかプロプライエタリかを問わず、アプリケーションで pugixml を自由に使えるということです。製品で pugixml を使用する場合は、次のような謝辞を製品の配布物へ追加すれば十分です。
This software is based on pugixml library (https://pugixml.org).
pugixml is Copyright (C) 2006-2026 Arseny Kapoulkine.