windows で C++ から xpathが使いたい!!
windowsでC++からxpathが利用したいんですよ。
どうするべきか。
1.ビルのOSの機能を利用する
ビルのOSだったら、 ActiveXだろうって感じだけど、
msxmlで xpathが利用できるけど、こいつは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 |