2004年09月02日

仕事の合間で書いてみた

昨今XMLが流行ってるようだが、
Microsoftはアプリケーションの設定保存ファイルにXMLを推奨しているらしい。
(ソースは不明)
当初、趣味での製作予定だったアプリケーションではINIファイルにするつもりだったが、
最近XMLの名前は何かと聞くし、慣れておいた方がいいかー。
ってことでXMLを採用。
DOMSAXの違いが明確にわかってないけど(藁
その辺は使ううちに本買って勉強するなりするから気にせず・・・・

早速どのXML Parserがいいのか調査してみた。
C++でのXML操作を前提としてるが、ぴえるサソにも有益だと思われるので掲載してみる。


MSXML
Microsoft XML Parser
Windows環境のみ使用可。
DOM、SAXの両対応。
2.0はIE5.0以上に付属されているらしいが、3.0以上をクライアント側で使用する場合には、
DLL類のインストールor保持が必要となる。
C++のXMLパーサの中では高い性能に位置する。

Xerces
Apache XML ProjectのオープンソースなXML Parser
Windows、RedHatLinux、AIX(UNIX)等で動作が確認されているが、
各環境ごとのソースをビルドするなりバイナリ配布されている物を使用する必要がある。
C++の他にJavaやPerl版も存在する。
DOM、SAXの両対応。
大きいパーサで、DOMを使用した際にはファイルサイズが200kb程増加するらしい。
オープンソースXML Parserの中でも活動が活発で、
バージョンアップの頻度が高く、バージョンによっては微妙にコンパイル方法が違ったりする。
クライアント側で使用する場合はDLL等の同梱なりインストールが必要。
Windows環境で使用する場合には、ノード取得の際に文字化けが発生する為、
IBMのUNICODE関連ライブラリであるICUをXercesに組み込む必要がある。
VC++6.0ならば配布されているバイナリファイルでよいが、
VC++7.0以降ではICUのソースファイルからビルドし、Xercesに組み込まなくてはならない。

Mix
標準C++ライブラリのみによるオープンソースな純国産XML Parser
C++標準ライブラリでコーディングされており、環境依存がほとんど無い。
メジャーなコンパイラでは大体使用出来る。
DOM、SAXの両対応。
サイズも小さめ。
小さなプロジェクトの為、ライブラリの精度はMSXMLやXercesに劣る。
2004年8月31日現在の最新ソースではコンストラクタの初期化リストの順番が違う為にエラーが出るとか。

Expat
CのXML Parser
サイズは小さめだが、SAXのみの対応。

TinyXml
コンパクトなXML Parser
最低限の機能はあり、サイズが小さいため使いやすいらしいが、
かなり前からアップデートされてない為にバグとか不備があるかもしれない。

世界樹
国産ライブラリ。
厳密なXML Parserではなく、なんちゃってXML Parserらしい(マテ
マイナーな為に情報は少なめだが、国産だけに使いやすいはず。
詳しい性質・機能は使ってみないとわからない。

調べてみて、出た結論は、なんだかXMLはイマイチ。
今後XML使う事になるだろうから、後学の為にも使ってみるって程度かもね。
利便性ではINIファイルの方が全然いいし。
WinAPIのGetPrivateProfile系関数は簡単だし、Win環境なら同関数使えばいいからなぁ。
UNIXならTSV(Tab Separated Vallues)のI/Oでも作ればいいしなー。

XML Parser使うとしたら、MSXML2.0、Xerces-C++、Mixあたりかな。
個人的には環境非依存がウマーだからMix使いたいところ。

ツールの完成度を考えるとINIがいいっぽいけど、ぴえるサソとしてはどうよ?

投稿者 SHA : 2004年09月02日 21:12
コメント

携帯からパピコー ただそれだけ

Posted by: ぴえる : 2004年09月02日 22:04

携帯からパピコー ただそれだけ

Posted by: ぴえる : 2004年09月02日 22:06
コメントする









名前、アドレスを登録しますか?