libxml2 のドキュメントを眺めていたら,DOM インタフェースや SAX インタフェースだけではなく,XmlTextReader インタフェースというのもありました。 これはドキュメントをパースしながら(ストリーミング)処理をしていくという点で SAX インタフェースに似ているのですが,SAX は callback インタフェースであるのに対して,こちらは能動的に情報を pull するという点でプログラミングがしやすいです。またストリーミング処理なので,(逐一ノード情報を preserve するのでなければ)DOM インタフェースと比べてメモリ消費の点でも優しいです。 Perl の XML::LibXML で使ってみました。C での使い方や概念については Libxml2 XmlTextReader Interface tutorial に載っています。 基本的な使い方 use str