xpath 大好きっ娘 な takuya です。こんばんは。
xpath をもっと手軽に扱いたい
xpath を扱うには、libxm2やlibxsltをruby やpython から使ってたんですが。phpのxpath は微妙だし。
コマンドラインから使おうと思ってコマンド書き始めてたら、すでにコマンドが用意されてるんですね。
xmllint コマンド
xmllint コマンドというものがあります。引数に --xpath をつけるとxpathを使えます。
takuya@rena:~/Desktop$ echo "<a><b><c>cccc</c></b></a>" | xmllint --xpath "//c/text()" - cccc
linux や OSX は標準装備
osx の場合は、最初から入ってる
takuya@osx:~/Desktop$ which xmllint /usr/bin/xmllint
takuya@debian:~$ which xmllint /usr/bin/xmllint
どの環境でも使えるならとっても便利ですね!。
HTML を使う
html を扱うときは --html
をつける
xmllint --html --xpath "//input" -
HTMLは厳格な仕様で書かれていることが少ないので、Warningが大量に出る。これはSTDERRに出るので無視できる。
xmllint --html --xpath "//input[@name='post_id']/@value" - 2>/dev/null
2014-09-05 修正
標準入力 STDIN から受けるときは、 - を末尾に置かないと動かなかったの
2023-05-23 修正
html を扱うときにフラグが必要になっていた。
みんな大好き!man ページ
xmllint はその名の通りlint なので、奥が深いプログラムですね。