それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

xmlを扱う xmllint コマンドで xpath

xpath 大好きっ娘 な takuya です。こんばんは。

xpath をもっと手軽に扱いたい

xpath を扱うには、libxm2やlibxsltをrubypython から使ってたんですが。phpxpath は微妙だし。

コマンドラインから使おうと思ってコマンド書き始めてたら、すでにコマンドが用意されてるんですね。

xmllint コマンド

xmllint コマンドというものがあります。引数に --xpath をつけるとxpathを使えます。

takuya@rena:~/Desktop$ echo "<a><b><c>cccc</c></b></a>" | xmllint  --xpath "//c/text()"  - 
cccc

linuxOSX は標準装備

osx の場合は、最初から入ってる

takuya@osx:~/Desktop$ which xmllint
/usr/bin/xmllint

debianなどLinuxでも最初から入ってる。

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 なので、奥が深いプログラムですね。