ちなみに、expatはSAXでXMLを扱うためのライブラリ。C言語で実装されてるけど、問題なくC++で使える。
RSSを読み込んでデータ型に落とし込もうということをしてみたんだけど、意外と難しい。
SAXってイベント駆動型のAPIなので、全部自前で管理するのだが、結構どうしたもんかなと言うときがある。
基本の動きとしては、
開始エレメント -> 中身 -> 終端エレメント
という感じで動くんだけど、
こんな感じのXMLだとえらいことになる
<hoge> <fuga>中身</fuga> </hoge>XMLは性質上、空白文字とかもテキストノードとして扱うので、イベントがこんな感じになる。
hoge開始
↓
改行文字及び、空白文字
↓
fuga開始
↓
中身の文字
↓
fuga終了
↓
改行文字
↓
hoge終了
正直、無駄イベントが多すぎな印象。こんな場合個人的には、改行文字と空白文字を除いてほしいのだが、そうもいかんらしい。自前で無視するか、イベントハンドラを追加するか・・・悩ましい。
No comments:
Post a Comment