EXI Editor
EXI Editor は、EXI 形式でバイナリエンコードされたXMLをテキストエディタ感覚で編集できるツールです。現在はEclipseプラグイン形式でのみ提供しています。
EXIとは
XMLは多くの利点がある反面、「冗長」「処理が低速」という問題を抱えています。一つのXML文書の中で「同じ文字列」や「標準仕様が定義した固定文字列」が繰り返し登場することで冗長になり、データサイズが大きくなりがちです。また、XMLの読み込み・書き込み処理は、文字列処理と構造処理を行うため、処理負荷が高くなりがちです。この二つの問題を、「バイナリ表現」「ポインタ」「XMLイベントの埋め込み」によって解決するのが「バイナリXML」です。EXIはW3Cが勧告したバイナリXMLの最新仕様です。EXIは他のバイナリXML形式に勝るデータ圧縮効率があると同時に、優れた処理性能を発揮できるStAXイベント列に似たデータ構造を持っています。また、文字列や構造の辞書としてXMLスキーマを参照したり、バイナリになったデータをさらにZIPのような原理でデータ圧縮したりすることによって、さらなる圧縮率向上が図れるという特長があります。EXIのデータサイズは、XMLを単純にデータ圧縮した時のデータサイズと比べて、同等、またはそれより小さくなりますが、必ずしもEXIの方が優れているというわけではありません。しかし、処理速度の点で圧倒的にEXI(バイナリXML)の方が優れているというのは言うまでもありません。
機能・特長
- EXIファイル新規作成ウィザード
- ルート要素のみを持つシンプルなEXIファイルを作成します。(※1)
- バイナリエンコードの粒度(ビット単位/バイト単位)を指定できます。(※1)
- バイト単位でエンコードするとき、インスタンス参照を途中に埋め込むか、最後にまとめるかを選択できます。(※1)
- バイト単位でエンコードするとき、データ圧縮の有無を指定できます。(※1)
- XMLスキーマ参照の有無を指定できます。(※1)
- EXIファイルエディタ
- EXI形式のバイナリをプレーンテキストに変換して表示します。また、それを直接編集して保存できます。
- バイナリエンコードの粒度を自動判別します。保存時は自動設定(開いた時と同じ)、手動設定のいずれかを選択できます。(※1)
- データ圧縮の有無、圧縮率を自動判別します。保存時は自動設定(開いた時と同じ)、手動設定のいずれかを選択できます。(※1)
- XMLスキーマの関連付けを自動判別して開き、保存します。(※1)
- XMLスキーマとEXIファイルの関連付けは、EXIファイルと同じ場所にあるXML形式のプロパティファイル「.schema」を編集すれば簡単に変更できます。(※1)
- 要素、属性などの単位で色分けして見やすく表示します。
- XMLの構成要素単位で自動的に改行をつけて見やすく表示します。
- 編集時に追加した改行やインデントは保存されません。
- 拡張子が「exi」のファイルが関連付けられています。
- 文字コードは「UTF-8」に対応しています。日本語も使えます。
- EXIファイルの表示や保存に失敗しても、元のデータが守られるバックアップ機構を備えています。(※1)
- 名前空間URIのプレフィックス、DTD、コメント、XMLスキーマロケーションなど、FidelityOptionsは保存されません。
(※1)はバージョン0.1.2以降で提供された機能です。
動作環境
ダウンロード
- 更新サイト http://exi-editor.sourceforge.jp/ をご利用ください。
- バージョンリリースのスナップショットが必要な方はこちらをご利用ください。
- 現在の最新バージョンは「0.1.3」です。
- Eclipseプラグインの標準的な方法でインストールできます。
- プレビュー版(バージョン0.1.1)をお使いの方は、インストールの前に旧バージョンをアンインストールしてください。
使い方
既知の不具合
- ウィザードでEXIファイルを「バイト単位で格納+リチャネル(Pre-Compression)」で作成しても「(バイト単位で格納)Byte-Packed」として認識される
- 本来はEXI ヘッダーのEXI オプションに書いてあるアラインメントオプションによって自動認識すべきですが、そうしていないために発生します。
- 「Byte-Packed」と「Pre-Compression」は参照化したイベントリストを途中に埋め込むか、最後にまとめてつけるか、の差しかないらしく、現在の方法では誤認識してしまいます。
- どうしても「Pre-Compression」を使いたい場合は、ウィンドウ-設定-EXI-Editor にて保存時のアラインメントオプションを「バイト単位で格納+リチャネル」にしてください。
サポート
フォーラムで、質問を受け付けます。チケットで、不具合報告、機能追加要望、改良要望を受け付けます。
商用利用について
このプロジェクトは、EXI Editorを商用利用していただくことを歓迎しています。商用利用に係るサポートも、通常のサポート同様に受け付けます。
依存関係
EXI の処理に「EXIficient」を利用しています。
今後の展開
- FidelityOptionsを変更可能にする。本来、FidelityOptionsはEXIファイルの中にあるEXI HeaderのEXI Optionに書かれるものですが、現在のEXIficientはEXI Optionを読み込んで適切に処理する実装がされていないので、対応していません。.schemaファイルは急場しのぎのローカル仕様なので、あまり信用しないでください。EXI Optionを書いて、FidelityOptionsを有効にしていくと、その分EXIファイルのサイズがどんどん大きくなってしまい、本来の目的と矛盾するので、あまり気乗りしませんが、よい方法を考えます。
- EXIファイルのバイナリが壊れていても、できる限り読み込んで編集可能にする「復旧モード」