Xerces-C++ を使ってみる

とある理由でウエブアプリから入手できるXMLパーサーを作る必要にかられている。別のところでウェブアプリとして作っておいたのだが、ホスト自体の運用が終わってしまったわけ。ウェブアプリでもいいのだけど、もう少し手を入れやすく、スタンドアロンアプリとしてC++で作ってみる事にする。

ダウンロードしたXMLファイルをパースするのもいいが、もうアプリの中でデーターをサーバーから取得、それを適当に料理して表示・ファイルに書き出しできれば十分。というわけでXMLパーサーを選択。

順当なところならばlibxml++あたりでよさげなのだが、オンラインでデータ取得するには、たぶん別の何かが必要?で、Xerces-C++を使う事にする。

http://xerces.apache.org/xerces-c/

URLから入手する方法が書かれている所がよくわからんかったので、適当につくってみた。
基本としては

  • XMLURLクラスでURLを指定
  • URLInputSource を XMLURLから作る。(たぶん直接つくればいいのだろうが、引数の意味がよくわからん)
  • 適当なパーサーにURLInputSourceオブジェクトを食わせる

で良さそう。少なくとも保存したXMLファイルと直接URLを指定する場合で、出力が一緒になった。

あとは適当なハンドラを書いて、フォーマットすればよろし。(実のところはxhtmlで処理するほうがいいような気はしている)