xmllint は便利ですね。XMLファイル中をコンソール出来る。んですね
XML をbashみたいに使えたらイイなと思ってた
ず〜〜っっと思ってた。XMLってツリー構造だから、cd したりファイルシステムみたいにたどれたらイイなと思った。
xmllint 調べたら --shell というシェルオプションを見つけて歓喜したわ。
--shell オプション
xmllint --shell http://takuya-1st.hatenablog.jp/rss
シェルプオプションを使うと
cd したり、pwd 出来たり便利すぎる。
やってみたらこんな感じ
xmllint --shell http://takuya-1st.hatenablog.jp/rss rss > du rss channel title link description lastBuildDate docs generator item title link description pubDate guid item title link description pubDate guid rss >
同名のノードの場合
同名のノードが複数回登場する場合は、インデックスを付けてアクセスする。
channel > pwd /rss/channel channel > cd item[1] item > pwd /rss/channel/item[1] item >
便利なコマンド
readline使えないのが惜しい・・・
矢印キー、tab で補完とか、Ctrl+Rで履歴をたどるとか出来ない。 出来ないのかなぁそのうち調べる。
参考資料 help について
--shell 起動中にhelp を叩くと、このような表示になる。
item > help base display XML base of the node setbase URI change the XML base of the node bye leave shell cat [node] display node or current node cd [path] change directory to path or to root dir [path] dumps informations about the node (namespace, attributes, content) du [path] show the structure of the subtree under path or the current node exit leave shell help display this help free display memory usage load [name] load a new document with name ls [path] list contents of path or the current directory set xml_fragment replace the current node content with the fragment parsed in context xpath expr evaluate the XPath expression in that context and print the result setns nsreg register a namespace to a prefix in the XPath evaluation context format for nsreg is: prefix=[nsuri] (i.e. prefix= unsets a prefix) setrootns register all namespace found on the root element the default namespace if any uses 'defaultns' prefix pwd display current working directory whereis display absolute path of [path] or current working directory quit leave shell save [name] save this document to name or the original name write [name] write the current node to the filename validate check the document for errors relaxng rng validate the document agaisnt the Relax-NG schemas grep string search for a string in the subtree