windows で C++ から xpathが使いたい!!

windowsC++からxpathが利用したいんですよ。
どうするべきか。

1.ビルのOSの機能を利用する
ビルのOSだったら、 ActiveXだろうって感じだけど、
msxmlxpathが利用できるけど、こいつはxml専用でhtmlを読み込むことはできない。
ちょっと前にやって挫折した。。。
→達成された方がいらっしゃいました。すごい!!。
WSH で HTML を XPath したいんじゃあああぁぁ
別途、JavaScript-XPathが必要になります。

2.libxml2 を利用する
phpも内部でlibxmlを利用しているので、この前の phpのルーチンをそのまま移植すればいけそうです。
ただし、libxml は utf8しか扱えないので、 sjis←→utf8変換をしまくる必要があるようです。
http://xmlsoft.org/

macosでの例だけどライブラリを使う上では参考になりました。
CocoaでHTMLを扱う

↓この前のルーチン
phpでxpath

3.TinyXPathを利用する
まだ試していないんですが、これでもいけそうです。libxml2 よりこっちのほうが簡単?
TinyXPath

4.xpcom経由で firefoxを呼び出す。
多分これが一番理想なんだろうけど、文献がないのでよくわからん。

↓こーゆーのができるからがんばれば可能だとは思うが、、、
FirefoxのhtmlparserをXPCOM経由で呼び出して壊れたHTMLを修復する


まず、どうやってxpathを作成するかによると思う。
xpathはまだまだ方言があって、実装によって機能が使えたり使えなかったりするので、xpathを作る環境と実際に使う環境とで差異があるとめんどい。
私は、firefoxの xpatherで作成したいので 4のxpcomの方法が取れれば一番いいんだけど、どうやればいいかよくわからない。

libxml2 は utf8変換を考えないなら、とりあえず動いた。
utf8というのがwindowsにとって鬼門だよな。
ビルのOSは、早めにunicode化したのが災いしているよね。
もし、ビルのOSが今unicode化をするならutf8を採用している気がするよね。
そんで世界は utf8の統合されて開発者はみんなハッピーハッピーだったと思う。
いろんなところで使われているライブラリだから、移植性もよさげ。

TinyXPath はサンプルを見る限り簡単そう。
ただ、libxml2 に比べると実績が不安。どうなの?
ぐだくだいわずコードを書くべきか。。。

独断と偏見によるまとめ

ライブラリ名 実装難易度 ユーザの導入し易さ クロスプラットフォーム firefoxとの親和性 ライセンス
msxml
OSディフォは最高なんだけど
IEはアレなのでJavaScript-XPathが必要になる
×
windows限定
IEはそもそもダメなので
JavaScript-XPath次第だけど結構よさげ?
IEはOSディフォだけど、
JavaScript-XPath がMIT ライセンス
libxml2
(windows系だとutf8は鬼門)

libiconvとか依存が、windowsだと面倒

結構癖があるよ
MITライセンス
TinyXPath
まだ試していない

組み込みだしね

組み込みだし
zlib/libpngライセンス
xpcom ×
わけわかりません

mozilla firefoxが必要

firefoxそのもの
Mozilla Public License