xml に対する sed/jq 的なプログラム


テキストを sed で処理したり、 json を jq で処理するように、 xml
を処理したいと考えているのですが、これに適したプログラムはありますでしょうか？




XPath で指定したノードを取り出すとかでしたら、 `xmllint` コマンドがなかなかいい感じです。

[code]

    <dict>
        <prop name="foo" value="bar" />
        <prop name="hoge" value="piyo" />
    </dict>
    
[/code]

を `test.xml` として保存しておいて、

[code]

    $ xmllint --xpath "count(/dict/prop)" test.xml
    2
    $ xmllint --xpath "/dict/prop[1]" test.xml
    <prop name="foo" value="bar"/>
    $ xmllint --xpath "string(/dict/prop[@name='hoge']/@value)" test.xml
    piyo
    
[/code]

などなど。

## 参考

  * [ShellScriptでXMLの内容を取り出す | Opentone Labs.](http://labs.opentone.co.jp/?p=5273)
  * [Command line utilities for analyzing XML (xpath and xmllint) | Nishigaya's Tech Blog](http://javaflavor.hopto.org/blog/2013/01/14/xpath-and-xmllint/)




XPath で指定したノードを取り出すとかでしたら、 `xmllint` コマンドがなかなかいい感じです。

[code]

    <dict>
        <prop name="foo" value="bar" />
        <prop name="hoge" value="piyo" />
    </dict>
    
[/code]

を `test.xml` として保存しておいて、

[code]

    $ xmllint --xpath "count(/dict/prop)" test.xml
    2
    $ xmllint --xpath "/dict/prop[1]" test.xml
    <prop name="foo" value="bar"/>
    $ xmllint --xpath "string(/dict/prop[@name='hoge']/@value)" test.xml
    piyo
    
[/code]

などなど。

## 参考

  * [ShellScriptでXMLの内容を取り出す | Opentone Labs.](http://labs.opentone.co.jp/?p=5273)
  * [Command line utilities for analyzing XML (xpath and xmllint) | Nishigaya's Tech Blog](http://javaflavor.hopto.org/blog/2013/01/14/xpath-and-xmllint/)

