libXMLを使ってみる。
2005年10月11日Hornet用のエディタの開発で、アプリの設定保存のためにXMLを利用しようということで、C++で利用できるxmlプロセッサを探してみた。
XML4C、Xercesはでかすぎるし、かといって他のライブラリはライセンス上問題があるので、各プラットフォームに移植されていて、利用しやすいlibXMLを採用することにした。
ただ、問題が、libXMLはC用であって、C++用ではlibXML++を利用しなければならないという点。このlibXML++は、MITじゃなくて、LGPLなため、あんまり利用したくない。
というわけで、libXMLをC++でラッピングすることに。
とりあえず、木構造でアクセスするだけで十分なので、xmlDocGetRootElementで取得したルートのxmlNodeを利用して再帰的に検索をかけるようにした。
子xmlNodeは、クラスとしてラッピングさせ、ファイル検索と同様にコンポジットパターンで記述し、さっと書き上げた。後でIlaliartのCVSリポジトリに上げるつもり。
読み込みはできたので、次は書き込みを実装する。
書き込み実装の際に、できれば読み込みと同時にできるようにしたいなぁと考えたり。
XML4C、Xercesはでかすぎるし、かといって他のライブラリはライセンス上問題があるので、各プラットフォームに移植されていて、利用しやすいlibXMLを採用することにした。
ただ、問題が、libXMLはC用であって、C++用ではlibXML++を利用しなければならないという点。このlibXML++は、MITじゃなくて、LGPLなため、あんまり利用したくない。
というわけで、libXMLをC++でラッピングすることに。
とりあえず、木構造でアクセスするだけで十分なので、xmlDocGetRootElementで取得したルートのxmlNodeを利用して再帰的に検索をかけるようにした。
子xmlNodeは、クラスとしてラッピングさせ、ファイル検索と同様にコンポジットパターンで記述し、さっと書き上げた。後でIlaliartのCVSリポジトリに上げるつもり。
読み込みはできたので、次は書き込みを実装する。
書き込み実装の際に、できれば読み込みと同時にできるようにしたいなぁと考えたり。
コメント